Loading

NOM

       sigvec, sigblock, sigsetmask, siggetmask, sigmask - API signaux BSD

SYNOPSIS

       #include <signal.h>

       int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec);

       int sigmask(int signum);

       int sigblock(int mask);

       int sigsetmask(int mask);

       int siggetmask(void);

   Exigences  de  macros  de  test  de  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

       Toutes les fonctions ci-dessus : _BSD_SOURCE

       Ces  fonctions  sont  fournies  dans  la  glibc  comme   interface   de
       compatibilité  pour  les  programmes  qui  utilisent  l’API signaux BSD
       historique.  Cette  API  est  obsolète,  les   nouvelles   applications
       devraient  utiliser  l’API signaux POSIX (sigaction(2), sigprocmask(2),
       etc.).

       La fonction sigvec() configure et/ou récupère le dispositif  du  signal
       sig  (comme  l’appel  POSIX  sigaction(2)).  Si  vec n’est pas NULL, il
       pointe sur une structure sigvec qui définit le nouveau dispositif  pour
       sig. Si ovec n’est pas NULL, il pointe sur une structure sigvec qui est
       utilisée pour renvoyer le dispositif précédent de sig. Pour obtenir  le
       dispositif  courant  de sig sans le modifier, vous devez spécifier NULL
       pour vec, et un pointeur non NULL pour ovec.

       Les dispositifs pour SIGKILL et SIGSTOP ne peuvent pas être modifiés.

       La structure sigvec à la forme suivante :

           struct sigvec {
               void (*sv_handler)();  /* Dispositif du signal*/
               int    sv_mask;        /* Signaux à bloquer dans le gestionnaire */
               int    sv_flags;       /* Drapeaux */
           };

       Le champ sv_handler spécifie  le  dispositif  du  signal  et  est  soit
       l’adresse   de   la  fonction  gestionnaire  de  signal,  soit  SIG_DFL
       signifiant que le dispositif par  défaut  s’applique  au  signal,  soit
       SIG_IGN signifiant que le signal est ignoré.

       Si  sv_handler  spécifie l’adresse d’un gestionnaire de signal, sv_mask
       spécifie un masque  de  signaux  qui  seront  bloqués  pendant  que  le
       gestionnaire  s’exécute. De plus, le signal pour lequel le gestionnaire
       est appelé est également bloqué par défaut. Toute tentative de  bloquer
       SIGKILL ou SIGSTOP est silencieusement ignorée.

       Si  sv_handler spécifie l’adresse d’un gestionnaire de signal, le champ
       sv_flags spécifie des attributs contrôlant ce qui se passe  lorsque  le
       gestionnaire  est  appelé.  Ce  champ  peut  contenir  zéro ou plus des
       attributs suivants :

       SV_INTERRUPT
              Si le  gestionnaire  de  signaux  interrompt  un  appel  système
              bloquant,  l’appel  système  ne  sera  pas  relancé au retour du
              gestionnaire. À la place, il échouera avec  l’erreur  EINTR.  Si
              cet  attribut  n’est  pas  spécifié,  les  appels  système  sont
              relancés par défaut.

       SV_RESETHAND
              Réinitialiser le dispositif du signal à  sa  valeur  par  défaut
              avant  d’appeler  le  gestionnaire  de  signaux. Si cet attribut
              n’est pas spécifié, le gestionnaire reste positionné jusqu’à  ce
              qu’il  soit  explicitement  supprimé  par  un  appel ultérieur à
              sigvec() ou jusqu’à ce que le processus effectue un execve(2).

       SV_ONSTACK
              Gère le signal sur la pile de signaux spécifique (historiquement
              positionné  sous  BSD  avec la fonction obsolète sigstack() ; la
              fonction POSIX qui la remplace est sigaltstack(2)).

       La fonction sigmask() construit et renvoie un masque  de  signaux  pour
       signum.  Par  exemple, on peut initialiser le champ vec.sv_mask passé à
       sigvec() avec un code tel que le suivant :

           vec.sv_mask = sigmask(SIGQUIT) | sigpause(SIGABRT);
                       /* Bloquer SIGQUIT et SIGABRT pendant
                          l’exécution du gestionnaire */

       La fonction sigblock() ajoute les signaux de mask au masque de  signaux
       du  processus  (comme l’appel POSIX sigprocmask(SIG_BLOCK)), et renvoie
       le masque de signaux précédent du processus. Toute tentative de bloquer
       SIGKILL ou SIGSTOP est silencieusement ignorée.

       La  fonction sigsetmask() configure le masque de signaux du processus à
       la    valeur    donnée    dans    mask     (comme     l’appel     POSIX
       sigprocmask(SIG_SETMASK)), et renvoie le masque de signaux précédent du
       processus.

       La fonction siggetmask()  renvoie  le  masque  de  signaux  courant  du
       processus. Cet appel est équivalent à sigblock(0).

VALEUR RENVOYÉE

       Si  elle  réussit, la fonction sigvec() renvoie 0. Si elle échoue, elle
       renvoie -1 et écrit errno pour indiquer l’erreur.

       Les fonctions sigblock() et sigsetmask() renvoient le masque de signaux
       précédent.

       La fonction sigmask() renvoie le masque de signaux pour signum.

ERREURS

       Voir   la   section   ERREURS  des  pages  de  manuel  sigaction(2)  et
       sigprocmask(2).

CONFORMITÉ

       Toutes ces fonctions étaient dans BSD 4.3, excepté  siggetmask(),  dont
       l’origine  n’est  pas  claire.  Ces  fonctions  sont  obsolètes. Ne les
       utilisez pas dans de nouveaux programmes.

NOTES

       Sur BSD 4.3, la fonction signal() fournit une sémantique fiable  (comme
       lorsqu’on appelle sigvec() avec vec.sv_mask valant 0). Sur System V, la
       fonction signal()  fournit  une  sémantique  non  fiable.  POSIX.1-2001
       laisse  ces aspects de signal() non spécifiés. Voir signal(2) pour plus
       de détails.

       Afin d’attendre un signal, BSD et System V fournissent  tous  les  deux
       une  fonction  nommée  sigpause(3), mais cette fonction n’a pas le même
       argument sur les deux systèmes. Voir sigpause(3) pour les détails.

VOIR AUSSI

       kill(2), pause(2), sigaction(2), signal(2),  sigprocmask(2),  raise(3),
       sigpause(3), sigset(3), signal(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a  été  traduite  par  Alain  Portal  <aportal  AT
       univ-montp2   DOT   fr>   en   2006,   et   mise   à   disposition  sur
       http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».