sigqueue(3) Library Functions Manual sigqueue(3) NUME sigqueue - pune la coada un semnal i date pentru un proces BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include int sigqueue(pid_t pid, int sig, const union sigval value); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): sigqueue(): _POSIX_C_SOURCE >= 199309L DESCRIERE sigqueue() trimite semnalul specificat in sig catre procesul al carui PID este dat in pid. Permisiunile necesare pentru a trimite un semnal sunt aceleai ca pentru kill(2). Ca i in cazul kill(2), semnalul nul (0) poate fi utilizat pentru a verifica daca exista un proces cu un PID dat. Argumentul value este utilizat pentru a specifica un element de date insoitor (fie un numar intreg, fie o valoare de indicator) care urmeaza sa fie trimis impreuna cu semnalul i are urmatorul tip: union sigval { int sival_int; void *sival_ptr; }; In cazul in care procesul de recepie a instalat un gestionar pentru acest semnal utilizand fanionul SA_SIGINFO la sigaction(2), atunci acesta poate obine aceste date prin intermediul campului si_value din structura siginfo_t transmisa ca al doilea argument al gestionarului. In plus, campul si_code al acestei structuri va fi stabilit la SI_QUEUE. VALOAREA RETURNATA In caz de succes, sigqueue() returneaza 0, indicand ca semnalul a fost pus cu succes in coada catre procesul receptor. In caz contrar, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EAGAIN A fost atinsa limita de semnale care pot fi puse in coada. A se vedea signal(7) pentru informaii suplimentare. EINVAL sig nu a fost valid. EPERM Procesul nu are permisiunea de a trimite semnalul catre procesul receptor. Pentru permisiunile necesare, a se vedea kill(2). ESRCH Niciun proces nu are un PID care sa corespunda cu pid. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |sigqueue() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ VERSIUNI Diferene intre biblioteca C i nucleu In Linux, sigqueue() este implementat utilizand apelul de sistem rt_sigqueueinfo(2). Apelul de sistem difera prin cel de-al treilea argument, care este structura siginfo_t care va fi furnizata gestionarului de semnal al procesului receptor sau returnata de apelul sigtimedwait(2) al procesului receptor. In interiorul funciei invaluitoare sigqueue() a glibc, acest argument, uinfo, este iniializat dupa cum urmeaza: 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() */ STANDARDE POSIX.1-2008. ISTORIC Linux 2.2. POSIX.1-2001. NOTE Daca aceasta funcie are ca rezultat trimiterea unui semnal catre procesul care a invocat-o, iar acest semnal nu a fost blocat de firul apelant i nici un alt fir nu a fost dispus sa gestioneze acest semnal (fie prin deblocarea lui, fie prin ateptarea lui folosind sigwait(3)), atunci cel puin un semnal trebuie sa fie transmis acestui fir inainte ca aceasta funcie sa returneze. CONSULTAI I kill(2), rt_sigqueueinfo(2), sigaction(2), signal(2), pthread_sigqueue(3), sigwait(3), signal(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 sigqueue(3)