SIGNAL(2)          Manuel du programmeur Linux          SIGNAL(2)


NOM
       signal - Gestionnaire ANSI C de signaux.


SYNOPSIS
       #include <signal.h>


       void (*signal(int signum, void (*handler)(int)))(int);


DESCRIPTION
       L'appel  système  signal  installe un nouveau gestionnaire
       pour le signal numéro signum.  Le gestionnaire  de  signal
       est  handler qui peut être soit une fonction spécifique de
       l'utilisateur, soit l'une des constantes suivantes :

              SIG_IGN
                     Ignorer le signal

              SIG_DFL
                     Reprendre le comportement par défaut pour le
                     signal


       L'argument  entier qui est passé au gestionnaire de signal
       est le numéro du signal. Ceci permet  d'utiliser  un  même
       gestionnaire pour plusieurs signaux.


VALEUR RENVOYÉE
       signal  renvoie  la  valeur  précédente du gestionnaire de
       signaux, ou SIG_ERR en cas d'erreur.


NOTES
       On ne peut fournir de  gestionnaire  de  signaux  ni  pour
       SIGKILL ni pour SIGSTOP.

       Contrairement  aux  systèmes  BSD,  les signaux sous Linux
       reprennent  leurs  comportements  par  défaut  après  leur
       première réception. Il est donc généralement nécessaire de
       réarmer le gestionnaire (par un nouvel appel à signal ) au
       sein même du gestionnaire.

       Néanmoins,  si  l'on  inclut  <bsd/signal.h> à la place de
       <signal.h>  alors  signal  est  redéfini   en   tant   que
       __bsd_signal et disposera alors de la sémantique BSD.  Les
       deux versions sont construites à partir de  signaction(2).

       Si  le prototype en haut de cette page vous semble confus,
       décomposez-le ainsi

       typedef void (*sighandler_t)(int);



Linux                      9 Avril 1999                         1





SIGNAL(2)          Manuel du programmeur Linux          SIGNAL(2)


       sighandler_t signal(int signum, sighandler_t handler);

       Comme spécifié par POSIX, le comportement  d'un  processus
       est  indéfini  après la réception d'un signal SIGFPE, SIG­
       ILL, ou SIGSEGV qui n'a pas été engendré par une  fonction
       kill() ou raise().

       La  division  entière par zéro a un résultat indéfini, sur
       certaines architecture elle déclenche  un  signal  SIGFPE.
       Ignorer  ce  signal  peut conduire à des boucles infinies.
       (De même diviser l'entier le  plus  négatif  par  -1  peut
       déclencher SIGFPE).

       POSIX (B.3.3.1.3) désapprouve le positionnement de SIGCHLD
       à SIG_IGN.   Les  comportements  BSD  et  SYSV  diffèrent,
       faisant  échouer  sous  Linux  les logiciels BSD qui posi­
       tionne l'action de SIGCHK à SIG_IGN.


CONFORMITÉ
       ANSI C


VOIR AUSSI
       kill(1), kill(2), killpg(2),  pause(2),  raise(3),  sigac­
       tion(2), signal(7), sigsetops(3), sigvec(2)


TRADUCTION
       Christophe Blaess, 1997.



























Linux                      9 Avril 1999                         2