Latest web development tutorials

fonctions de la bibliothèque C - Signal ()

C bibliothèque standard - <signal.h> C bibliothèque standard - <signal.h>

description

C fonction de bibliothèquevoid (* signal (int sig, void (* func) (int))) (int) pour mettre en place une fonction pour traiter le signal avec un gestionnaire de signal qui est des paramètres sig.

déclaration

Ce qui suit est une fonction signal d'instruction ().

void (*signal(int sig, void (*func)(int)))(int)

Paramètres

  • sig - codes de signaux dans le traitement du signal utilisé dans le programme en tant que variable.Voici quelques constantes de signal de critères importants:
信号
SIGABRT(Signal Abort) 程序异常终止。
SIGFPE(Signal Floating-Point Exception) 算术运算出错,如除数为 0 或溢出(不一定是浮点运算)。
SIGILL(Signal Illegal Instruction) 非法函数映象,如非法指令,通常是由于代码中的某个变体或者尝试执行数据导致的。
SIGINT(Signal Interrupt) 中断信号,如 ctrl-C,通常由用户生成。
SIGSEGV(Signal Segmentation Violation) 非法访问存储器,如访问不存在的内存单元。
SIGTERM(Signal Terminate) 发送给本程序的终止请求信号。
  • fonc - un pointeur vers une fonction.Il peut être une fonction définie par le programme, il peut être l'un de la fonction prédéfinie ci-dessous:
SIG_DFL默认的信号处理程序。
SIG_IGN忽视信号。

Valeur de retour

Cette fonction retourne la valeur du gestionnaire de signal avant la SIG_ERR en cas de retour en cas d'erreur.

Exemples

L'exemple suivant illustre la fonction signal () est utilisée.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

void sighandler(int);

int main()
{
   signal(SIGINT, sighandler);

   while(1) 
   {
      printf("开始休眠一秒钟...\n");
      sleep(1);
   }

   return(0);
}

void sighandler(int signum)
{
   printf("捕获信号 %d,跳出...\n", signum);
   exit(1);
}

Nous allons compiler et exécuter le programme ci-dessus, qui va produire les résultats suivants, et le programme va entrer dans une boucle infinie, utilisez les touches CTRL + C sur le programme.

开始休眠一秒钟...
开始休眠一秒钟...
开始休眠一秒钟...
开始休眠一秒钟...
开始休眠一秒钟...
捕获信号 2,跳出...

C bibliothèque standard - <signal.h> C bibliothèque standard - <signal.h>