Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       sigqueue - Enregistrer un signal et des données pour un processus

SYNOPSIS

       #include <signal.h>

       int sigqueue(pid_t pid, int sig, const union sigval value);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       sigqueue():
           _POSIX_C_SOURCE >= 199309L

DESCRIPTION

       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 (consultez 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, consultez kill(2).

       ESRCH  Il n'y a pas de processus correspondant au pid.

VERSIONS

       sigqueue()   and  the  underlying  rt_sigqueueinfo(2)  system call first appeared in Linux
       2.2.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │sigqueue()                                              │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008.

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.

   différences entre bibliothèque C et noyau
       On Linux, sigqueue()  is implemented using the rt_sigqueueinfo(2) system call. The  system
       call differs in its third argument, which is the siginfo_t structure that will be supplied
       to the  receiving  process's  signal  handler  or  returned  by  the  receiving  process's
       sigtimedwait(2)  call.  Inside  the  glibc  sigqueue()   wrapper, this argument, uinfo, is
       initialized as follows:

           uinfo.si_signo = sig;      /* Paramètre fourni à sigqueue() */
           uinfo.si_code = SI_QUEUE;
           uinfo.si_pid = getpid();   /* Identifiant du processus émetteur */
           uinfo.si_uid = getuid();   /* UID réel de l'émetteur */
           uinfo.si_value = val;      /* Paramètre fourni à sigqueue() */

VOIR AUSSI

       kill(2), rt_sigqueueinfo(2),  sigaction(2),  signal(2),  pthread_sigqueue(3),  sigwait(3),
       signal(7)

COLOPHON

       Cette  page  fait partie de la publication 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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> et Frédéric Hantrais <fhantrais@gmail.com>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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 à ⟨debian-l10n-french@lists.debian.org⟩.