SIGACTION(2)       Manuel du programmeur Linux       SIGACTION(2)


NOM
       sigaction, sigprocmask, sigpending, sigsuspend - Fonctions
       POSIX de manipulations de signaux.

SYNOPSIS
       #include <signal.h>


       int sigaction(int signum,  const  struct  sigaction  *act,
       struct sigaction *oldact);

       int  sigprocmask(int  how,  const  sigset_t *set, sigset_t
       *oldset);

       int sigpending(sigset_t *set);

       int sigsuspend(const sigset_t *mask);


DESCRIPTION
       L'appel  système  sigaction  sert  à   modifier   l'action
       effectuée  par  un  processus  à  la réception d'un signal
       spécifique.

       signum  indique  le  signal  concerné,  à  l'exception  de
       SIGKILL et SIGSTOP.

       Si  act  est  non  nul,  la nouvelle action pour le signal
       signum est définie  par  act.   Si  oldact  est  non  nul,
       l'ancienne action est sauvegardée dans oldact.

       La structure sigaction est définie comme suit :

              struct sigaction {
                  void (*sa_handler)(int);
                  sigset_t sa_mask;
                  int sa_flags;
                  void (*sa_restorer)(void);
              }

       sa_handler  indique l'action affectée au signal signum, et
       peut être SIG_DFL pour l'action par défaut,  SIG_IGN  pour
       ignorer le signal, ou un pointeur sur une fonction de ges­
       tion de signaux.

       sa_mask fournit un masque de  signaux  à  bloquer  pendant
       l'exécution  du  gestionnaire.   De  plus  le signal ayant
       appelé  le  gestionnaire  est  bloqué  à  moins  que   les
       attributs SA_NODEFER ou SA_NOMASK soient précisés.

       sa_flags spécifie un ensemble d'attributs qui modifient le
       comportement du gestionnaire de signaux. Il est formé  par
       un OU binaire ( | ) entre les options suivantes :




Linux                      9 Avril 1999                         1





SIGACTION(2)       Manuel du programmeur Linux       SIGACTION(2)


              SA_NOCLDSTOP
                     Si  signum vaut SIGCHLD, ne pas recevoir les
                     signaux de notification d'arrêt d'un proces­
                     sus  fils  (quand  le  fils reçoit un signal
                     SIGSTOP, SIGTSTP, SIGTTIN ou SIGTTOU).

              SA_ONESHOT or SA_RESETHAND
                     Rétablir l'action  à  son  comportement  par
                     défaut  une  fois  que le gestionnaire a été
                     appelé (C'est  le  comportement  par  défaut
                     avec la fonction signal(2) )

              SA_RESTART
                     Fournir  un  comportement compatible avec la
                     sémantique BSD en réinstallant  le  gestion­
                     naire de signaux après son activation.

              SA_NOMASK or SA_NODEFER
                     Ne pas empêcher un signal d'être reçu depuis
                     l'intérieur de son propre gestionnaire.

       L'option SA_RESTORER est obsolète  et  ne  doit  pas  être
       utilisée.

       L'appel  sigprocmask est utilisé pour changer la liste des
       signaux actuellement bloqués. Son comportement est  dépen­
       dant de la valeur de how, avec les conventions suivantes :

              SIG_BLOCK
                     L'ensemble des signaux bloqués  est  l'union
                     de l'ensemble actuel et de l'argument set.

              SIG_UNBLOCK
                     Les  signaux  dans  l'ensemble set sont sup­
                     primés de la liste des signaux  bloqués.  Il
                     est  possible  de  débloquer  un  signal non
                     bloqué.

              SIG_SETMASK
                     L'ensemble des signaux bloqués  est  égal  à
                     l'argument set.

       Si  oldset  est non nul, la valeur précédente du masque de
       signaux est stockée dans oldset.

       L'appel sigpending permet l'examen des signaux en  attente
       (qui  se  sont  déclenchés en étant bloqués). Le masque de
       signaux en attente est stocké dans set.

       L'appel sigsuspend remplace temporairement  le  masque  de
       signaux  bloqués par celui fourni dans mask puis endort le
       processus jusqu'à arrivée d'un signal.





Linux                      9 Avril 1999                         2





SIGACTION(2)       Manuel du programmeur Linux       SIGACTION(2)


VALEUR RENVOYÉE
       sigaction, sigprocmask, sigpending et sigsuspend renvoient
       0  s'ils  réussissent,  ou  -1  s'ils échouent, auquel cas
       errno contient le code d'erreur.


ERREURS
       EINVAL Un signal invalide est  indique.  Ceci  se  produit
              également   si  l'on  tente  de  modifier  l'action
              associée à SIGKILL ou SIGSTOP.

       EFAULT act, oldact, set ou oldset  pointent  en-dehors  de
              l'espace d'adressage accessible.

       EINTR  L'appel système a été interrompu.


NOTES
       Il  est  impossible  de  bloquer  SIGKILL  or SIGSTOP avec
       l'appel sigprocmask. Les tentatives seront ignorées silen­
       cieusement.

       Suivant POSIX, le comportement d'un processus est indéfini
       après qu'il  ait  ignoré  un  signal  SIGFPE,  SIGILL,  ou
       SIGSEGV  qui  n'avait  pas  été  engendré par une fonction
       kill() ou raise().  La division  entière  par  zéro  a  un
       résultat  indéfini.   Sur  certaines  architectures,  cela
       déclenchera un signal SIGFPE.  (De même  diviser  l'entier
       le  plus  négatif par -1 peut déclencher SIGFPE).  Ignorer
       ce signal peut mener à des boucles sans fin.

       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.

       Les  spécifications  POSIX définissent seulement SA_NOCLD­
       STOP.  L'utilisation des autres options de sa_flags  n'est
       pas portable.

       L'option SA_RESETHAND est compatible avec l'option SVr4 du
       même nom.

       L'option SA_NODEFER est compatible avec l'option  SVr4  du
       même  nom  pour  les  noyaux 1.3.9 et ultérieurs. Pour les
       noyaux plus anciens, Linux autorisera la réception de tous
       les  signaux  et  pas  seulement  celui  qui  vient  de se
       déclencher (écrasant effectivement sa_mask ).

       Les noms SA_RESETHAND  et  SA_NODEFER  pour  compatibilité
       avec  SVr4  ne  sont  présents  que dans les bibliothèques
       3.0.9 et suivantes.

       sigaction peut être appelé avec un  second  argument  null



Linux                      9 Avril 1999                         3





SIGACTION(2)       Manuel du programmeur Linux       SIGACTION(2)


       pour  obtenir  le  gestionnaire de signaux actuel. On peut
       aussi vérifier si un signal  est  valide  sur  la  machine
       actuelle  en  l'appellant  avec  les deuxième et troisième
       arguments nuls.

       Voir sigsetops(3) pour les détails concernant  les  ensem­
       bles de signaux.

CONFORMITÉ
       POSIX,  SVr4.  SVr4 ne documente pas la condition d'erreur
       EINTR.

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


TRADUCTION
       Christophe Blaess, 1997.






































Linux                      9 Avril 1999                         4