Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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   (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 est défini pour indiquer
       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 non valable.

       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.

ATTRIBUTS

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

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

VERSIONS

   Différences entre bibliothèque C et noyau
       Sous Linux, l'implémentation de sigqueue() utilise l'appel système rt_sigqueueinfo(2).  Le
       troisième  paramètre  de  l'appel  système  diffère,  puisqu'il  correspond à la structure
       siginfo_t qui sera fournie au gestionnaire de signal du processus recevant  le  signal  ou
       qui  sera  renvoyée  par  l'appel sigtimedwait(2) du processus recevant le signal. Dans la
       fonction d'enveloppe sigqueue() de la glibc, ce paramètre uinfo est  initialisé  de  cette
       façon :

           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() */

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       Linux 2.1. 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.

VOIR AUSSI

       kill(2),  rt_sigqueueinfo(2),  sigaction(2),  signal(2),  pthread_sigqueue(3), sigwait(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-Pierre
       Giraud <jean-pierregiraud@neuf.fr>

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