Loading

NOM

       sigwaitinfo, sigtimedwait - Attente synchrone de signaux.

SYNOPSIS

       #include <signal.h>

       int sigwaitinfo(const sigset_t *set, siginfo_t *info);

       int sigtimedwait(const sigset_t *set, siginfo_t *info,
                        const struct timespec *timeout);

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

       sigwaitinfo(), sigtimedwait() : _POSIX_C_SOURCE >= 199309L

       sigwaitinfo() suspend l’exécution du thread  appelant  jusqu’à  ce  que
       l’un  des  signaux de l’ensemble set soit reçu. (Si l’un des signaux de
       l’ensemble  set  est  déjà  en  attente  pour   le   thread   appelant,
       sigwaitinfo() revient immédiatement avec les informations concernant le
       signal).

       sigwaitinfo() retire le signal de l’ensemble des signaux en attente, et
       renvoie  le numéro du signal comme valeur de retour. Si l’argument info
       n’est pas NULL, alors  il  sera  rempli  avec  une  structure  du  type
       siginfo_t  (voir sigaction(2)) contenant les informations concernant le
       signal.

       Les  signaux  reçus  via  sigwaitinfo()  sont  délivrés  dans   l’ordre
       habituel, voir signal(7) pour plus de détails.

       sigtimedwait()  opère  exactement  comme  sigwaitinfo()  mais elle a un
       argument supplémentaire,  timeout,  qui  permet  de  fixer  une  limite
       maximale  au  temps pendant lequel le thread est suspendu. Cet argument
       est du type :

           struct timespec {
               long    tv_sec;         /* secondes */
               long    tv_nsec;        /* nanosecondes */
           }

       Si les deux champs de cette structure sont nuls, sigtimedwait() revient
       tout  de  suite,  soit  avec  des  informations  sur  un signal déjà en
       attente, soit avec une  erreur  si  aucun  signaux  de  l’ensemble  set
       n’étaient disponibles.

VALEUR RENVOYÉE

       S’ils  réussissent  sigwaitinfo() et sigtimedwait() renvoient un numéro
       de signal (une valeur supérieure à zéro). S’ils échouent, ils renvoient
       -1, et errno contient le code d’erreur.

ERREURS

       EAGAIN Aucun  signal de l’ensemble set n’a été reçu avant expiration du
              délai timeout indiqué pour sigtimedwait().

       EINTR  L’appel a été interrompu par un gestionnaire  de  signal ;  voir
              signal(7).  (Un  signal  autre que ceux présents dans l’ensemble
              set.)

       EINVAL timeout était invalide.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       En utilisation habituelle, l’appelant bloque les signaux de  l’ensemble
       set  au  préalable avec un appel sigprocmask(2) (afin que la délivrance
       des signaux ne se produise pas en dehors de  l’appel  sigwaitinfo()  ou
       sigtimedwait())  et  n’installe  pas  de gestionnaire pour ces signaux.
       Dans un programme multithreadé, le signal doit être  bloqué  dans  tous
       les  threads  pour  empêcher  que  le signal ne soit délivré à un autre
       thread que celui exécutant sigwaitinfo() ou sigtimedwait().

       L’ensemble des signaux qui sont en attente pour une  thread  donné  est
       l’union  de  l’ensemble  des  signaux spécifiquement en attente pour ce
       thread et de l’ensemble  des  signaux  en  attente  pour  le  processus
       lui-même (voir signal(7)).

       Si  plusieurs threads d’un processus sont bloqués dans sigwaitinfo() or
       sigtimedwait() en attente du ou des mêmes signaux, un seul des  threads
       recevra  réellement  le  signal  s’il est fourni au processus (dans son
       ensemble) ; on ne peut pas savoir quel thread recevra le signal.

       POSIX ne spécifie pas le comportement si une valeur NULL  est  indiquée
       pour  l’argument  timeout  de  sigtimedwait(),  permettant  par exemple
       d’avoir le même comportement que celui de sigwaitinfo(), ce qui est  le
       cas sous Linux.

       Sous  Linux, sigwaitinfo() est une fonction de bibliothèque implémentée
       au dessus de sigtimedwait().

VOIR AUSSI

       kill(2),   sigaction(2),   signal(2),    signalfd(2),    sigpending(2),
       sigprocmask(2),   sigqueue(2),   sigsetops(3),  sigwait(3),  signal(7),
       time(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 et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’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 Julien Cristau <jcristau@debian.org> 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> ».