sigqueue(3) Library Functions Manual sigqueue(3) NOM sigqueue - Enregistrer un signal et des donnees pour un processus BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int sigqueue(pid_t pid, int sig, const union sigval valeur); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : sigqueue() : _POSIX_C_SOURCE >= 199309L DESCRIPTION sigqueue() envoie le signal sig au processus indique par pid. Les permissions requises pour l'emission du signal sont les memes que pour kill(2). Comme avec kill(2), le signal nul (0) peut servir a verifier si un processus existe avec un PID donne. L'argument valeur sert a indiquer une donnee (soit un entier, soit un pointeur) qui accompagnera le signal et se presente avec le type suivant : union sigval { int sival_int; void *sival_ptr; }; Si le processus recepteur a installe un gestionnaire pour le signal avec l'option SA_SIGINFO lors du sigaction(2), il pourra obtenir la donnee dans le champ si_value de la structure siginfo_t passee en second argument au gestionnaire. De plus, le champ si_code de la structure contiendra SI_QUEUE. VALEUR RENVOYEE L'appel sigqueue() renvoie 0 s'il reussit, indiquant que le signal a bien ete mis dans la file du processus recepteur. Sinon, il renvoie -1 et errno est defini pour indiquer l'erreur. ERREURS EAGAIN La limite du nombre de signaux en file a ete atteinte (consultez signal(7) pour plus d'informations). EINVAL sig est non valable. EPERM Le processus n'a pas la permission d'envoyer un signal au processus vise. Pour les permissions necessaires, consultez kill(2). ESRCH Il n'y a pas de processus correspondant au pid. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |sigqueue() | Securite des threads | MT-Safe | +---------------------------------+--------------------------+---------+ VERSIONS Differences entre bibliotheque C et noyau Sous Linux, l'implementation de sigqueue() utilise l'appel systeme rt_sigqueueinfo(2). Le troisieme parametre de l'appel systeme differe, puisqu'il correspond a la structure siginfo_t qui sera fournie au gestionnaire de signal du processus recevant le signal ou qui sera renvoyee par l'appel sigtimedwait(2) du processus recevant le signal. Dans la fonction d'enveloppe sigqueue() de la glibc, ce parametre uinfo est initialise de cette facon : uinfo.si_signo = sig; /* Parametre fourni a sigqueue() */ uinfo.si_code = SI_QUEUE; uinfo.si_pid = getpid(); /* Identifiant du processus emetteur */ uinfo.si_uid = getuid(); /* UID reel de l'emetteur */ uinfo.si_value = val; /* Parametre fourni a sigqueue() */ STANDARDS POSIX.1-2008. HISTORIQUE Linux 2.1. POSIX.1-2001. NOTES Si l'appel consiste a envoyer un signal au processus qui l'a invoque, et si le signal n'est pas bloque par le thread appelant, et si aucun autre thread ne peut traiter le signal (soit en l'ayant debloque, ou en faisant une attente avec sigwait(3)), alors au moins quelques signaux seront delivres au thread appelant avant que la fonction ne revienne. VOIR AUSSI kill(2), rt_sigqueueinfo(2), sigaction(2), signal(2), pthread_sigqueue(3), sigwait(3), signal(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-Pierre Giraud 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.8 2 mai 2024 sigqueue(3)