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

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ță │ Atribut │ Valoare │
├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
│ 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)