rt_sigqueueinfo
Table des matières
Retour à l'index
NOM
rt_sigqueueinfo, rt_tgsigqueueinfo – Mettre un signal et des données dans la
file d'attente d'un processus
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <linux/signal.h> /* Définition des constantes SI_* */
#include <sys/syscall.h> /* Définition des constantes SYS_* */
#include <unistd.h>
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
système ; consultez NOTES.
DESCRIPTION
Les appels système rt_sigqueueinfo() et rt_tgsigqueueinfo() sont les
interfaces de bas niveau utilisées pour envoyer un signal accompagné de
données à un processus ou à un thread. Le récepteur du signal peut obtenir
les données associées en établissant un gestionnaire de signal à l'aide de
l'attribut SA_SIGINFO de sigaction(2).
Ces appels système ne sont pas destinés à être utilisés directement par une
application ; ils sont fournis pour permettre l'implémentation de
sigqueue(3) et pthread_sigqueue(3).
L'appel système 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 à l'identifiant de processus
UNIX traditionnel.) Le signal sera délivré à un membre arbitraire de ce
groupe de threads (c'est-à-dire un des threads qui n'est pas en train de
bloquer le signal).
Le paramètre info spécifie les données devant accompagner le signal. Ce
paramètre est un pointeur vers une structure de type siginfo_t décrite
dans sigaction(2) (et définie en incluant
<sigaction.h>). L'appelant doit positionner les champs suivants
dans cette structure :
- si_code
-
Cela doit être un des codes SI_* du fichier source du noyau Linux
include/asm-generic/siginfo.h. Si le signal doit être envoyé à un autre
processus que l'appelant lui-même, les restrictions suivantes s'appliquent :
-
- -
-
Le code ne peut pas être une valeur supérieure ou égale à zéro. En
particulier, il ne peut s'agir de SI_USER qui est utilisé par le noyau
pour indiquer un signal envoyé par kill(2), ni de SI_KERNEL qui est
utilisé pour indiquer un signal généré par le noyau.
- -
-
Le code ne peut pas (depuis Linux 2.6.39) être SI_TKILL qui est utilisé
par le noyau pour indiquer le signal envoyé en utilisant tgkill(2).
- si_pid
-
Cela doit être égal à l'identifiant d'un processus, typiquement celui du
processus émetteur.
- si_uid
-
Cela doit être égal à l'identifiant d'un utilisateur, typiquement
l'identifiant utilisateur réel de l'émetteur.
- si_value
-
Ce champ contient les données utilisateur pour accompagner le signal. Pour
plus d'informations, consultez la description du dernier argument
(union_sigval) de sigqueue(3).
De manière interne, le noyau positionne le champ si_signo à la valeur
indiquée dans sig, de sorte que le récepteur du signal puisse aussi
obtenir le numéro du signal à l’aide de ce champ.
L'appel système rt_tgsigqueueinfo() fonctionne comme
rt_sigqueueinfo(), mais n'envoie le signal et les données qu'à l'unique
thread indiqué par la combinaison de tgid, un identifiant de groupe de
threads, et de tid, un thread dans ce groupe.
VALEUR RENVOYÉE
En cas du succès, ces appels système 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 été 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 à la cible. Pour les droits
nécessaires, 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 à tgid n'a
été trouvé.
rt_tgsigqueinfo() : aucun thread correspondant à tgid et tid n'a
été trouvé.
STANDARDS
Linux.
HISTORIQUE
- rt_sigqueueinfo()
-
Linux 2.2.
- rt_tgsigqueueinfo()
-
Linux 2.6.31
NOTES
Comme ces appels système ne sont pas destinés à être utilisés par une
application, il n'existe aucune fonction d'encapsulation glibc ; utilisez
syscall(2) dans le cas peu probable où vous voudriez les appeler
directement.
Comme pour kill(2), le signal nul (0) peut être utilisé pour vérifier
si le processus ou le thread indiqué 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 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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- STANDARDS
-
- HISTORIQUE
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:04 GMT, September 19, 2025