Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       sigqueue - pune la coadă un semnal și date pentru un proces

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <signal.h>

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

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       sigqueue():
           _POSIX_C_SOURCE >= 199309L

DESCRIERE

       sigqueue()  trimite semnalul specificat în sig către procesul al cărui PID este dat în pid.  Permisiunile
       necesare pentru a trimite un semnal sunt aceleași ca pentru kill(2).  Ca și în  cazul  kill(2),  semnalul
       nul (0) poate fi utilizat pentru a verifica dacă există un proces cu un PID dat.

       Argumentul  value este utilizat pentru a specifica un element de date însoțitor (fie un număr întreg, fie
       o valoare de indicator) care urmează să fie trimis împreună cu semnalul și are următorul tip:

           union sigval {
               int   sival_int;
               void *sival_ptr;
           };

       În cazul în care procesul de recepție a instalat un gestionar  pentru  acest  semnal  utilizând  fanionul
       SA_SIGINFO la sigaction(2), atunci acesta poate obține aceste date prin intermediul câmpului si_value din
       structura siginfo_t transmisă ca al doilea argument al gestionarului.  În plus, câmpul si_code al acestei
       structuri va fi stabilit la SI_QUEUE.

VALOAREA RETURNATĂ

       În  caz  de  succes,  sigqueue()  returnează  0, indicând că semnalul a fost pus cu succes în coadă către
       procesul receptor.  În caz contrar, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI

       EAGAIN A fost atinsă limita de semnale care pot fi puse în coadă.  A se vedea signal(7) pentru informații
              suplimentare.

       EINVAL sig nu a fost valid.

       EPERM  Procesul nu are permisiunea de a trimite semnalul către procesul  receptor.   Pentru  permisiunile
              necesare, a se vedea kill(2).

       ESRCH  Niciun proces nu are un PID care să corespundă cu pid.

VERSIUNI

       sigqueue()  și  apelul de sistem rt_sigqueueinfo(2) care stă la baza acestuia au apărut pentru prima dată
       în Linux 2.2.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ sigqueue()                                                              │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

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

NOTE

       Dacă această funcție are ca rezultat trimiterea unui semnal către procesul care a  invocat-o,  iar  acest
       semnal  nu  a fost blocat de firul apelant și nici un alt fir nu a fost dispus să gestioneze acest semnal
       (fie prin deblocarea lui, fie prin așteptarea lui  folosind  sigwait(3)),  atunci  cel  puțin  un  semnal
       trebuie să fie transmis acestui fir înainte ca această funcție să returneze.

   Diferențe între biblioteca C și nucleu
       În  Linux,  sigqueue()  este implementat utilizând apelul de sistem rt_sigqueueinfo(2).  Apelul de sistem
       diferă prin cel de-al treilea argument, care este structura siginfo_t care va fi furnizată  gestionarului
       de  semnal  al  procesului  receptor  sau returnată de apelul sigtimedwait(2) al procesului receptor.  În
       interiorul funcției învăluitoare sigqueue() a glibc, acest argument, uinfo,  este  inițializat  după  cum
       urmează:

           uinfo.si_signo = sig;      /* Argument furnizat pentru sigqueue() */
           uinfo.si_code = SI_QUEUE;
           uinfo.si_pid = getpid();   /* ID-ul de proces al expeditorului */
           uinfo.si_uid = getuid();   /* UID-ul real al expeditorului */
           uinfo.si_value = val;      /* Argument furnizat pentru sigqueue() */

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   creată   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  Nicio
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.03                  15 decembrie 2022                                    sigqueue(3)