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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.