Provided by: manpages-fr-dev_4.27.0-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 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                                     sigwaitinfo(2)