Scroll to navigation

sigsuspend(2) System Calls Manual sigsuspend(2)

NUME

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

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#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

mask indică o memorie care nu este o parte validă a spațiului de adrese al procesului.
Apelul a fost întrerupt de un semnal; signal(7).

STANDARDE

POSIX.1-2001, POSIX.1-2008.

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.

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

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 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.

30 octombrie 2022 Pagini de manual de Linux 6.03