rt_sigqueueinfo(2) System Calls Manual rt_sigqueueinfo(2) NOM rt_sigqueueinfo, rt_tgsigqueueinfo - Mettre un signal et des donnees dans la file d'attente d'un processus BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Definition des constantes SI_* */ #include /* Definition des constantes SYS_* */ #include int syscall(SYS_rt_sigqueueinfo, pid_t tgid, int sig, siginfo_t *info); int syscall(SYS_rt_tgsigqueueinfo, pid_t tgid, pid_t tid, int sig, siginfo_t *info); Remarque : il n'existe pas de fonctions glibc autour de ces appels systeme ; consultez NOTES. DESCRIPTION Les appels systeme rt_sigqueueinfo() et rt_tgsigqueueinfo() sont les interfaces de bas niveau utilisees pour envoyer un signal accompagne de donnees a un processus ou a un thread. Le recepteur du signal peut obtenir les donnees associees en etablissant un gestionnaire de signal a l'aide de l'attribut SA_SIGINFO de sigaction(2). Ces appels systeme ne sont pas destines a etre utilises directement par une application ; ils sont fournis pour permettre l'implementation de sigqueue(3) et pthread_sigqueue(3). L'appel systeme rt_sigqueueinfo() envoie le signal sig au groupe de threads dont l'identifiant est tgid. (Le terme << groupe de threads >> est synonyme de << processus >> et tid correspond a l'identifiant de processus UNIX traditionnel.) Le signal sera delivre a un membre arbitraire de ce groupe de threads (c'est-a-dire un des threads qui n'est pas en train de bloquer le signal). Le parametre info specifie les donnees devant accompagner le signal. Ce parametre est un pointeur vers une structure de type siginfo_t decrite dans sigaction(2) (et definie en incluant ). L'appelant doit positionner les champs suivants dans cette structure : si_code Cela doit etre un des codes SI_* du fichier source du noyau Linux include/asm-generic/siginfo.h. Si le signal doit etre envoye a un autre processus que l'appelant lui-meme, les restrictions suivantes s'appliquent : - Le code ne peut pas etre une valeur superieure ou egale a zero. En particulier, il ne peut s'agir de SI_USER qui est utilise par le noyau pour indiquer un signal envoye par kill(2), ni de SI_KERNEL qui est utilise pour indiquer un signal genere par le noyau. - Le code ne peut pas (depuis Linux 2.6.39) etre SI_TKILL qui est utilise par le noyau pour indiquer le signal envoye en utilisant tgkill(2). si_pid Cela doit etre egal a l'identifiant d'un processus, typiquement celui du processus emetteur. si_uid Cela doit etre egal a l'identifiant d'un utilisateur, typiquement l'identifiant utilisateur reel de l'emetteur. si_value Ce champ contient les donnees utilisateur pour accompagner le signal. Pour plus d'informations, consultez la description du dernier argument (union_sigval) de sigqueue(3). De maniere interne, le noyau positionne le champ si_signo a la valeur indiquee dans sig, de sorte que le recepteur du signal puisse aussi obtenir le numero du signal a l'aide de ce champ. L'appel systeme rt_tgsigqueueinfo() fonctionne comme rt_sigqueueinfo(), mais n'envoie le signal et les donnees qu'a l'unique thread indique par la combinaison de tgid, un identifiant de groupe de threads, et de tid, un thread dans ce groupe. VALEUR RENVOYEE En cas du succes, ces appels systeme renvoient 0. Dans le cas contraire, ils renvoient -1 et remplissent errno avec le code d'erreur. ERREURS EAGAIN La limite du nombre de signaux en file a ete atteinte (consultez signal(7) pour plus d'informations). EINVAL sig, tgid ou tid n'est pas valable. EPERM L'appelant n'a pas le droit d'envoyer un signal a la cible. Pour les droits necessaires, consultez kill(2). EPERM tgid indique un autre processus que l'appelant et info->si_code n'est pas valable. ESRCH rt_sigqueueinfo() : aucun groupe de threads correspondant a tgid n'a ete trouve. rt_tgsigqueinfo() : aucun thread correspondant a tgid et tid n'a ete trouve. STANDARDS Linux. HISTORIQUE rt_sigqueueinfo() Linux 2.2. rt_tgsigqueueinfo() Linux 2.6.31 NOTES Comme ces appels systeme ne sont pas destines a etre utilises par une application, il n'existe aucune fonction d'encapsulation glibc ; utilisez syscall(2) dans le cas peu probable ou vous voudriez les appeler directement. Comme pour kill(2), le signal nul (0) peut etre utilise pour verifier si le processus ou le thread indique existe. VOIR AUSSI kill(2), pidfd_send_signal(2), sigaction(2), sigprocmask(2), tgkill(2), pthread_sigqueue(3), sigqueue(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-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 rt_sigqueueinfo(2)