NOM
sigqueue, rt_sigqueueinfo - Enregistrer un signal et des données pour
un processus
SYNOPSIS
#include <signal.h>
int sigqueue(pid_t pid, int sig, const union sigval valeur);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
sigqueue() : _POSIX_C_SOURCE >= 199309L
sigqueue() envoie le signal sig au processus indiqué par pid. Les
permissions requises pour l’émission du signal sont les mêmes que pour
kill(2). Comme avec kill(2), le signal nul (0) peut servir à vérifier
si un processus existe avec un PID donné.
L’argument valeur sert à indiquer une donnée (soit un entier, soit un
pointeur) qui accompagnera le signal et se présente avec le type
suivant :
union sigval {
int sival_int;
void *sival_ptr;
};
Si le processus récepteur a installé un gestionnaire pour le signal
avec l’option SA_SIGINFO lors du sigaction(2), il pourra obtenir la
donnée dans le champ si_value de la structure siginfo_t passée en
second argument au gestionnaire. De plus, le champ si_code de la
structure contiendra SI_QUEUE.
VALEUR RENVOYÉE
L’appel sigqueue() renvoie 0 s’il réussit, indiquant que le signal a
bien été mis dans la file du processus récepteur. Sinon il renvoie -1
et errno contient le code de l’erreur.
ERREURS
EAGAIN La limite du nombre de signaux en file a été atteinte. (Voir
signal(7) pour plus d’informations).
EINVAL sig est invalide.
EPERM Le processus n’a pas la permission d’envoyer un signal au
processus visé. Pour les permissions nécessaires, voir kill(2).
ESRCH Il n’y a pas de processus correspondant au pid.
VERSIONS
Cet appel système est apparu dans Linux 2.2.
CONFORMITÉ
POSIX.1-2001.
NOTES
Si l’appel consiste à envoyer un signal au processus qui l’a invoqué,
et si le signal n’est pas bloqué par le thread appelant, et si aucun
autre thread ne peut traiter le signal (soit en l’ayant débloqué, ou en
faisant une attente avec sigwait(3)), alors au moins quelques signaux
seront délivrés au thread appelant avant que la fonction ne revienne.
Sous Linux, l’appel système sous-jacent est en fait appelé
rt_sigqueueinfo() et son troisième paramètre diffère, puisqu’il
correspond à la structure siginfo_t qui sera fournie au gestionnaire de
signal du processus recevant le signal ou qui sera revoyée par l’appel
sigtimedwait(2) du processus recevant le signal. Dans la fonction
sigqueue() de la glibc, ce paramètre info est initialisé de cette
façon :
info.si_signo = sig; /* paramètre fourni à sigqueue() */
info.si_code = SI_QUEUE;
info.si_pid = getpid(); /* identifiant du processus émetteur */
info.si_uid = getuid(); /* UID réel de l’émetteur */
info.si_value = val; /* paramètre fourni à sigqueue() */
VOIR AUSSI
kill(2), sigaction(2), signal(2), sigwait(3), signal(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».