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

NOM

       pthread_sigmask - Examiner et modifier le masque des signaux bloqués

BIBLIOTHÈQUE

       Bibliothèque de threads POSIX (libpthread, -lpthread)

SYNOPSIS

       #include <signal.h>

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

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

       pthread_sigmask() :
           _POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500

DESCRIPTION

       La fonction pthread_sigmask() est identique à sigprocmask(2), à la différence près que son
       utilisation  dans  des  programmes  multithread  est  explicitement spécifié dans POSIX.1.
       D'autres différences sont indiquées dans cette page.

       Pour une description des arguments et du mode d'opération  de  cette  fonction,  consultez
       sigprocmask(2).

VALEUR RENVOYÉE

       En  cas de réussite, pthread_sigmask() renvoie 0 ; en cas d'erreur, elle renvoie un numéro
       d'erreur.

ERREURS

       Consultez sigprocmask(2).

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │pthread_sigmask()                                       │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

NOTES

       Un nouveau thread hérite d'une copie du masque de signaux de son créateur.

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

EXEMPLES

       Le programme ci-dessous bloque certains signaux dans le thread  principal,  puis  crée  un
       thread  dédié  pour  récupérer  ces  signaux avec sigwait(3). La session d'interpréteur de
       commande ci-dessous démontre l'utilisation du programme.

           $ ./a.out &
           [1] 5423
           $ kill -QUIT %1
           Signal handling thread got signal 3
           $ kill -USR1 %1
           Signal handling thread got signal 10
           $ kill -TERM %1
           [1]+  Terminated              ./a.out

   Source du programme

       #include <errno.h>
       #include <pthread.h>
       #include <signal.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       /* Simple error handling functions */

       #define handle_error_en(en, msg) \
               do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)

       static void *
       sig_thread(void *arg)
       {
           sigset_t *set = arg;
           int s, sig;

           for (;;) {
               s = sigwait(set, &sig);
               if (s != 0)
                   handle_error_en(s, "sigwait");
               printf("Signal handling thread got signal %d\n", sig);
           }
       }

       int
       main(void)
       {
           pthread_t thread;
           sigset_t set;
           int s;

           /* Block SIGQUIT and SIGUSR1; other threads created by main()
              will inherit a copy of the signal mask. */

           sigemptyset(&set);
           sigaddset(&set, SIGQUIT);
           sigaddset(&set, SIGUSR1);
           s = pthread_sigmask(SIG_BLOCK, &set, NULL);
           if (s != 0)
               handle_error_en(s, "pthread_sigmask");

           s = pthread_create(&thread, NULL, &sig_thread, &set);
           if (s != 0)
               handle_error_en(s, "pthread_create");

           /* Main thread carries on to create other threads and/or do
              other work. */

           pause();            /* Dummy pause so we can test program */
       }

VOIR AUSSI

       sigaction(2),      sigpending(2),      sigprocmask(2),      pthread_attr_setsigmask_np(3),
       pthread_create(3), pthread_kill(3), sigsetops(3), pthreads(7), 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>,   Frédéric   Hantrais
       <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       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⟩.