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

NOM

       sigwaitinfo, sigtimedwait, rt_sigtimedwait - Attente synchrone de signaux

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <signal.h>

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

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

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

DESCRIPTION

       sigwaitinfo() suspend l'exécution du thread appelant jusqu'à ce que l'un  des  signaux  de
       l'ensemble soit en attente. (Si l'un des signaux de l'ensemble est déjà en attente pour le
       thread appelant, sigwaitinfo() rend la main immédiatement).

       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 le tampon vers
       lequel il pointe est utilisé pour renvoyer une  structure  du  type  siginfo_t  (consultez
       sigaction(2)) contenant les informations concernant le signal.

       Si plusieurs signaux de l'ensemble sont mis en attente pour l'appelant, le signal récupéré
       sigwaitinfo() est déterminé par les règles de classement habituelles. Consultez  signal(7)
       pour plus de détails.

       sigtimedwait()   opère   exactement   comme   sigwaitinfo(),   mais  elle  a  un  argument
       supplémentaire, délai, qui permet de  définir  le  temps  pendant  lequel  le  thread  est
       suspendu dans l'attente d'un signal. (Cet intervalle de temps est arrondi à la granularité
       de l'horloge système et cet intervalle peut être modifié légèrement  à  cause  des  délais
       d'ordonnancement du noyau.) Cet argument est une structure timespec(3).

       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 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 n'a été mis en attente avant expiration du délai indiqué
              pour sigtimedwait().

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

       EINVAL délai était invalide.

VERSIONS

   Différences entre bibliothèque C et noyau
       Sous  Linux,  sigwaitinfo()  est  une  fonction  de  bibliothèque implémentée au dessus de
       sigtimedwait().

       Les  fonctions  enveloppes  sigwaitinfo()  et  sigtimedwait()   de   la   glibc   ignorent
       silencieusement  les  tentatives  pour attendre les deux signaux en temps réel utilisés en
       interne par l'implémentation de threading de NPTL. Consultez nptl(7) pour les détails.

       L'appel système Linux d'origine s'appelait sigtimedwait(). 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 pris
       en charge par cet appel système ne convenait plus  à  cet  objectif.  Par  conséquent,  un
       nouvel  appel  système  rt_sigtimedwait()  a  été  ajouté  pour  prendre en charge le type
       sigset_t élargi. Le nouvel appel système prend un quatrième paramètre, size_t  sigsetsize,
       qui  indique  la  taille  en  octets  des jeux de signal dans l'ensemble. Ce paramètre est
       actuellement nécessaire pour  obtenir  la  valeur  sizeof(sigset_t)  (ou  le  résultat  de
       l'erreur  EINVAL). La fonction enveloppe sigtimedwait() de la glibc nous cache ces détails
       en appelant de manière transparente rt_sigtimedwait() quand le noyau le fournit.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

NOTES

       En utilisation habituelle, l'appelant bloque les signaux de l'ensemble au  préalable  avec
       un  appel sigprocmask(2) (afin que la délivrance des signaux ne se produise pas s'ils sont
       mis en attente  entre  deux  appels  successifs  à  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  traité
       conformément  à  sa  disposition  par  défaut  dans  un  autre  thread que celui exécutant
       sigwaitinfo() ou sigtimedwait().

       L'ensemble des signaux qui sont en attente pour un 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 (consultez signal(7)).

       Les tentatives pour attendre SIGKILL or SIGSTOP seront ignorées silencieusement.

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

       sigwaitinfo()  ou  sigtimedwait()  ne  peuvent pas être utilisés pour recevoir des signaux
       générés de manière synchronisée, tels que le signal SIGSEGV qui provient  d'un  accès  non
       valable  à  l'adresse  mémoire ou SIGFPE qui fait suite à une erreur arithmétique. De tels
       signaux ne peuvent être récupérés qu'à l'aide d'un gestionnaire de signal.

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

VOIR AUSSI

       kill(2), sigaction(2), signal(2), signalfd(2), sigpending(2), sigprocmask(2), sigqueue(3),
       sigsetops(3), sigwait(3), timespec(3), signal(7), time(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⟩.