Scroll to navigation

sigqueue(3) Library Functions Manual sigqueue(3)

NUME

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

BIBLIOTECA

Biblioteca C standard (libc, -lc)

SINOPSIS

#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-IEȘIRE

A fost atinsă limita de semnale care pot fi puse în coadă. A se vedea signal(7) pentru informații suplimentare.
sig nu a fost valid.
Procesul nu are permisiunea de a trimite semnalul către procesul receptor. Pentru permisiunile necesare, a se vedea kill(2).
Niciun proces nu are un PID care să corespundă cu pid.

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

VERSIUNI

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() */

STANDARDE

POSIX.1-2008.

ISTORIC

Linux 2.2. POSIX.1-2001.

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.

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 făcută 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.

2 mai 2024 Pagini de manual Linux (nepublicate)