sigwaitinfo(2) System Calls Manual sigwaitinfo(2) NOM sigwaitinfo, sigtimedwait, rt_sigtimedwait - Attente synchrone de signaux BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include 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 fonctionnalites pour la glibc (consulter feature_test_macros(7)) : sigwaitinfo(), sigtimedwait() : _POSIX_C_SOURCE >= 199309L DESCRIPTION sigwaitinfo() suspend l'execution du thread appelant jusqu'a ce que l'un des signaux de l'ensemble soit en attente. (Si l'un des signaux de l'ensemble est deja en attente pour le thread appelant, sigwaitinfo() rend la main immediatement). sigwaitinfo() retire le signal de l'ensemble des signaux en attente, et renvoie le numero du signal comme valeur de retour. Si l'argument info n'est pas NULL, alors le tampon vers lequel il pointe est utilise 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 recupere sigwaitinfo() est determine par les regles de classement habituelles. Consultez signal(7) pour plus de details. sigtimedwait() opere exactement comme sigwaitinfo(), mais elle a un argument supplementaire, delai, qui permet de definir le temps pendant lequel le thread est suspendu dans l'attente d'un signal. (Cet intervalle de temps est arrondi a la granularite de l'horloge systeme et cet intervalle peut etre modifie legerement a cause des delais 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 deja en attente, soit avec une erreur si aucun signaux de l'ensemble n'etaient disponibles. VALEUR RENVOYEE S'ils reussissent sigwaitinfo() et sigtimedwait() renvoient un numero de signal (une valeur superieure a zero). S'ils echouent, ils renvoient -1 et errno contient le code d'erreur. ERREURS EAGAIN Aucun signal de l'ensemble n'a ete mis en attente avant expiration du delai indique pour sigtimedwait(). EINTR L'appel a ete interrompu par un gestionnaire de signal ; consultez signal(7). (Un signal autre que ceux presents dans l'ensemble.) EINVAL delai etait invalide. VERSIONS Differences entre bibliotheque C et noyau Sous Linux, sigwaitinfo() est une fonction de bibliotheque implementee au dessus de sigtimedwait(). Les fonctions enveloppes sigwaitinfo() et sigtimedwait() de la glibc ignorent silencieusement les tentatives pour attendre les deux signaux en temps reel utilises en interne par l'implementation de threading de NPTL. Consultez nptl(7) pour les details. L'appel systeme Linux d'origine s'appelait sigtimedwait(). Toutefois, avec l'arrivee des signaux en temps reel dans Linux 2.2 et de la taille figee, le type sigset_t 32 bits pris en charge par cet appel systeme ne convenait plus a cet objectif. Par consequent, un nouvel appel systeme rt_sigtimedwait() a ete ajoute pour prendre en charge le type sigset_t elargi. Le nouvel appel systeme prend un quatrieme parametre, size_t sigsetsize, qui indique la taille en octets des jeux de signal dans l'ensemble. Ce parametre est actuellement necessaire pour obtenir la valeur sizeof(sigset_t) (ou le resultat de l'erreur EINVAL). La fonction enveloppe sigtimedwait() de la glibc nous cache ces details en appelant de maniere 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 prealable avec un appel sigprocmask(2) (afin que la delivrance des signaux ne se produise pas s'ils sont mis en attente entre deux appels successifs a sigwaitinfo() ou sigtimedwait()) et n'installe pas de gestionnaire pour ces signaux. Dans un programme multithreade, le signal doit etre bloque dans tous les threads pour empecher que le signal ne soit traite conformement a sa disposition par defaut dans un autre thread que celui executant sigwaitinfo() ou sigtimedwait(). L'ensemble des signaux qui sont en attente pour un thread donne est l'union de l'ensemble des signaux specifiquement en attente pour ce thread et de l'ensemble des signaux en attente pour le processus lui-meme (consultez signal(7)). Les tentatives pour attendre SIGKILL or SIGSTOP seront ignorees silencieusement. Si plusieurs threads d'un processus sont bloques dans sigwaitinfo() ou sigtimedwait() en attente du ou des memes signaux, un seul des threads recevra reellement 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 etre utilises pour recevoir des signaux generes de maniere synchronisee, tels que le signal SIGSEGV qui provient d'un acces non valable a l'adresse memoire ou SIGFPE qui fait suite a une erreur arithmetique. De tels signaux ne peuvent etre recuperes qu'a l'aide d'un gestionnaire de signal. POSIX ne specifie pas le comportement si une valeur NULL est indiquee pour l'argument delai de sigtimedwait(), permettant par exemple d'avoir le meme 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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Cedric Boutillier , Frederic Hantrais et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 sigwaitinfo(2)