Provided by: manpages-fr-dev_3.57d1p1-1_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 valeur);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consultez
   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

       Cet appel système est apparu dans Linux 2.2.

ATTRIBUTS

   Multithreading (voir pthreads(7))
       La fonction sigqueue() est sûre dans un contexte multithread.

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'implémentation de la fonction 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 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() */

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 3.57 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

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

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