dwww Home | Manual pages | Find package

sigwaitinfo(2)                System Calls Manual               sigwaitinfo(2)

NOM
       sigwaitinfo,  sigtimedwait,  rt_sigtimedwait - Attente synchrone de si-
       gnaux

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 clas-
       sement habituelles. Consultez signal(7) pour plus de détails.

       sigtimedwait() opère exactement comme sigwaitinfo(), mais elle a un ar-
       gument  supplémentaire,  délai,  qui permet de définir le temps pendant
       lequel le thread est suspendu dans l'attente d'un signal.  (Cet  inter-
       valle 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'ordonnan-
       cement 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  at-
       tente,  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  expira-
              tion du délai indiqué pour sigtimedwait().

       EINTR  L'appel a été interrompu par un gestionnaire de signal ; consul-
              tez signal(7). (Un signal autre que  ceux  présents  dans  l'en-
              semble.)

       EINVAL délai était invalide.

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

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 ges-
       tionnaire  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 silen-
       cieusement.

       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 si-
       gnal.

       sigwaitinfo() ou sigtimedwait() ne peuvent pas être utilisés pour rece-
       voir  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.

   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 fonc-
       tion enveloppe sigtimedwait() de la glibc nous cache ces détails en ap-
       pelant  de  manière  transparente  rt_sigtimedwait()  quand le noyau le
       fournit.

VOIR AUSSI
       kill(2), sigaction(2), signal(2), signalfd(2), sigpending(2),  sigproc-
       mask(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  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>,  Cédric Boutillier <ce-
       dric.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⟩.

Pages du manuel de Linux 6.03   3 décembre 2022                 sigwaitinfo(2)

Generated by dwww version 1.15 on Sat Jun 29 00:40:03 CEST 2024.