Loading

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> ».