Provided by: manpages-fr-dev_4.26.0-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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                     sigprocmask(2)