sigsuspend(2)

NUME
sigsuspend, rt_sigsuspend, rt_sigsuspend - așteaptă un semnal

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <signal.h>

int sigsuspend(const sigset_t *mask);

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

sigsuspend():
    _POSIX_C_SOURCE

DESCRIERE
sigsuspend() înlocuiește temporar masca de semnal a firului apelant cu masca dată de mask și apoi suspendă firul până la livrarea unui semnal a cărui acțiune este de a invoca un gestionar de semnal sau de a încheia un proces.

Dacă semnalul termină procesul, atunci sigsuspend() nu returnează. În cazul în care semnalul este prins, atunci sigsuspend() returnează după ce gestionarul de semnal returnează, iar masca de semnal este restabilită la starea anterioară apelului la sigsuspend().

Nu este posibil să se blocheze SIGKILL sau SIGSTOP; specificarea acestor semnale în mask, nu are niciun efect asupra măștii de semnal a firului.

VALOAREA RETURNATĂ
sigsuspend() returnează întotdeauna -1, cu errno configurată pentru a indica eroarea (în mod normal, EINTR).

ERORI-IEȘIRE

EFAULT
    mask indică o memorie care nu este o parte validă a spațiului de adrese al procesului.

EINTR
    Apelul a fost întrerupt de un semnal; signal(7).

STANDARDE
POSIX.1-2024.

ISTORIC
POSIX.1-2001.

  Diferențe între biblioteca C și nucleu
Apelul original al sistemului Linux a fost numit sigsuspend(). Cu toate acestea, odată cu adăugarea semnalelor în timp real în Linux 2.2, tipul sigset_t de 32 de biți, de dimensiune fixă, admis de acest apel de sistem nu mai era adecvat scopului. În consecință, a fost adăugat un nou apel de sistem, rt_sigsuspend(), pentru a admite un tip sigset_t mărit. Noul apel de sistem primește un al doilea argument, size_t sigsetsize, care specifică dimensiunea în octeți a setului de semnale din mask. În prezent, acest argument trebuie să aibă valoarea sizeof(sigset_t) (în caz contrar, apare eroarea EINVAL). Funcția învăluitoare glibc sigsuspend() ne ascunde aceste detalii, apelând în mod transparent rt_sigsuspend() atunci când nucleul o furnizează.

NOTE
În mod normal, sigsuspend() este utilizat împreună cu sigprocmask(2) pentru a preveni transmiterea unui semnal în timpul executării unei secțiuni de cod critice. Apelantul blochează mai întâi semnalele cu sigprocmask(2). Când codul critic s-a terminat, apelantul așteaptă apoi semnalele prin apelarea sigsuspend() cu masca de semnal care a fost returnată de sigprocmask(2) (în argumentul oldset).

A se vedea sigsetops(3) pentru detalii privind manipularea seturilor de semnale.

CONSULTAȚI ȘI
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(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 (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.