Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       sigprocmask, rt_sigprocmask - Examiner et modifier les signaux bloqués

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <signal.h>

       /* Prototype de la fonction enveloppe de la glibc */
       int sigprocmask(int how, const sigset_t *_Nullable restrict set,
                                  sigset_t *_Nullable restrict oldset);

       #include <signal.h>            /* Définition des constantes SIG_* */
       #include <sys/syscall.h>       /* Définition des constantes SYS_* */
       #include <unistd.h>

       /* Prototype for the underlying system call */
       int syscall(SYS_rt_sigprocmask, int how,
                                  const kernel_sigset_t *_Nullable set,
                                  kernel_sigset_t *_Nullable oldset,
                                  size_t sigsetsize);

       /* Prototype de l'appel système antérieur */
       [[obsolète]] int syscall(SYS_sigprocmask, int how,
                                  const old_kernel_sigset_t *_Nullable set,
                                  old_kernel_sigset_t *_Nullable oldset);

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

       sigprocmask() :
           _POSIX_C_SOURCE

DESCRIPTION

       L'appel sigprocmask() est utilisé pour récupérer et/ou changer le  masque  de  signaux  du
       thread  appelant. Le masque de signaux est l'ensemble des signaux dont la distribution est
       actuellement bloquée pour l'appelant (consultez également signal(7) pour plus de détails).

       Son comportement est dépendant 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 supprimés de la liste des signaux bloqués. Il
              est permis de débloquer un signal non bloqué.

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

       Si oldset n'est pas NULL, la valeur précédente du  masque  de  signaux  est  stockée  dans
       oldset.

       Si  set  est  NULL,  le masque de signaux n'est pas modifié (how est donc ignoré), mais la
       valeur actuelle du masque de signaux est tout de même renvoyée dans oldset (s'il n'est pas
       NULL).

       Un  ensemble  de  fonctions  pour modifier et voir les variables de type sigset_t ("signal
       sets") est décrit dans sigsetops(3).

       L'utilisation  de  sigprocmask()  dans  un  processus  multithreadé  n'est  pas  définie ;
       consultez pthread_sigmask(3).

VALEUR RENVOYÉE

       sigprocmask()  renvoie  0  s'il  réussit.  En  cas  d'échec,  -1  est renvoyé et errno est
       positionné pour indiquer l'erreur.

ERREURS

       EFAULT L'un des paramètres set ou oldset pointe vers une zone mémoire n'appartenant pas  à
              l'espace d'adressage alloué du processus.

       EINVAL Soit  la  valeur indiquée dans how n'est pas valable, soit le noyau ne prend pas en
              charge la taille passée à sigsetsize.

VERSIONS

   Différences entre bibliothèque C et noyau
       La définition du noyau de sigset_t  diffère  par  la  taille  de  celle  utilisée  par  la
       bibliothèque  C.  Dans  cette  page de manuel, on fait référence à l'ancienne quand on dit
       kernel_sigset_t (elle s'appelle cependant sigset_t dans les sources du noyau).

       La fonction enveloppe sigprocmask() de la glibc ignore silencieusement les  tentatives  de
       blocage  des  deux  signaux  en  temps  réel  utilisés  en interne par l'implémentation de
       threading NPTL. Consultez nptl(7) pour des détails.

       L'appel système Linux d'origine s'appelait sigprocmask(). Toutefois,  avec  l'arrivée  des
       signaux  en  temps  réel  dans  Linux 2.2  et de la taille figée, le type sigset_t 32 bits
       (désigné comme old_kernel_sigset_t dans cette page de manuel),  pris  en  charge  par  cet
       appel  système  ne  convenait plus à cet objectif. Par conséquent, un nouvel appel système
       rt_sigprocmask(), a été ajouté pour prendre en charge le  type  sigset_t  élargi  (désigné
       comme  kernel_sigset_t  dans  cette  page  de  manuel).  Le  nouvel appel système prend un
       quatrième paramètre, size_t sigsetsize, qui indique  la  taille  en  octets  des  jeux  de
       signaux dans set et dans oldset. Ce paramètre est actuellement nécessaire pour obtenir une
       valeur fixe spécifique à l'architecture (équivalente à sizeof(kernel_sigset_t)).

       La fonction enveloppe sigprocmask() de la glibc nous cache ces  détails,  en  appelant  de
       manière transparente rt_sigprocmask() quand le noyau le fournit.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

NOTES

       Il  est  impossible de bloquer SIGKILL ou SIGSTOP avec l'appel sigprocmask. Les tentatives
       seront ignorées silencieusement.

       Chacun des threads d'un processus a son propre masque de signaux.

       Un processus enfant créé avec fork(2) hérite d'une copie  du  masque  de  signaux  de  son
       parent. Le masque de signaux est conservé au travers d'un execve(2).

       Si  l'un  des signaux SIGBUS, SIGFPE, SIGILL ou SIGSEGV est généré alors qu'il est bloqué,
       le résultat est indéfini, sauf si le signal a  été  généré  par  kill(2),  sigqueue(3)  ou
       raise(3).

       Consultez sigsetops(3) pour les détails concernant les ensembles de signaux.

       Remarquez  qu'il  est  acceptable  (bien  que peu utile) de renseigner tant set que oldset
       comme NULL.

VOIR AUSSI

       kill(2),    pause(2),    sigaction(2),    signal(2),     sigpending(2),     sigsuspend(2),
       pthread_sigmask(3), sigqueue(3), sigsetops(3), signal(7)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier  <barbier@debian.org>,  David  Prévot   <david@tilapin.org>,   Cédric   Boutillier
       <cedric.boutillier@gmail.com>,  Frédéric  Hantrais  <fhantrais@gmail.com> et Jean-Philippe
       MENGUAL <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.