sigset(3)

NUME
sigset, sighold, sigrelse, sigignore - API de semnal pentru System V

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <signal.h>

typedef typeof(void (int))  *sighandler_t;

[[depreciat]] sighandler_t sigset(int sig, sighandler_t disp);

[[depreciat]] int sighold(int sig);
[[depreciat]] int sigrelse(int sig);
[[depreciat]] int sigignore(int sig);

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

sigset(), sighold(), sigrelse(), sigignore():
    _XOPEN_SOURCE >= 500

DESCRIERE
Aceste funcții sunt furnizate în glibc ca o interfață de compatibilitate pentru programele care utilizează API-ul istoric de semnale System V. Acest API este depășit: noile aplicații ar trebui să utilizeze API-ul de semnal POSIX (sigaction(2), sigprocmask(2), etc.)

Funcția sigset() modifică dispoziția semnalului sig. Argumentul disp poate fi adresa unei funcții de tratare a semnalului sau una dintre următoarele constante:

SIG_DFL
    Readuce dispoziția sig la valoarea implicită.

SIG_IGN
    Ignoră sig.

SIG_HOLD
    Adaugă sig la masca de semnal a procesului, dar lasă dispoziția lui sig neschimbată.

Dacă disp specifică adresa unui manipulator de semnal, atunci sig este adăugat la masca de semnal a procesului în timpul executării gestionarului.

Dacă disp a fost specificat ca o valoare diferită de SIG_HOLD, atunci sig este eliminat din masca de semnal a procesului.

Dispozițiile pentru SIGKILL și SIGSTOP nu pot fi modificate.

Funcția sighold() adaugă sig la masca de semnal a procesului apelant.

Funcția sigrelse() elimină sig din masca de semnal a procesului apelant.

Funcția sigignore() stabilește dispoziția sig la SIG_IGN.

VALOAREA RETURNATĂ
În caz de succes, sigset() returnează SIG_HOLD dacă sig a fost blocat înainte de apel, sau dispoziția anterioară a semnalului dacă acesta nu a fost blocat înainte de apel. În caz de eroare, sigset() returnează -1, cu errno configurată pentru a indica eroarea. A se vedea însă ERORI, mai jos.

Funcțiile sighold(), sigrelse() și sigignore() returnează 0 în caz de succes; în caz de eroare, aceste funcții returnează -1 și configurează errno pentru a indica eroarea.

ERORI-IEȘIRE
Pentru sigset(), a se vedea ERORILE de la sigaction(2) și sigprocmask(2).

Pentru sighold() și sigrelse(), a se vedea ERORI la sigprocmask(2).

Pentru sigignore(), a se vedea erorile de la sigaction(2).

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
sigset(), sighold(), sigrelse(), sigignore() | Siguranța firelor | MT-Safe

STANDARDE
POSIX.1-2008.

sighandler_t
    GNU. POSIX.1 utilizează același tip, dar fără un typedef.

ISTORIC
glibc 2.1. SVr4, POSIX.1-2001. POSIX.1-2008 marchează aceste funcții ca fiind depășite, recomandând în schimb utilizarea sigaction(2), sigprocmask(2), pthread_sigmask(3) și sigsuspend(2).

NOTE
Funcția sigset() oferă o semantică fiabilă de gestionare a semnalelor (ca atunci când se apelează sigaction(2) cu sa_mask egal cu 0).

Pe System V, funcția signal() oferă o semantică nesigură (ca atunci când se apelează sigaction(2) cu sa_mask egal cu SA_RESETHAND | SA_NODEFER). Pe BSD, signal() oferă o semantică fiabilă. POSIX.1-2001 lasă aceste aspecte ale signal() nespecificate. Consultați signal(2) pentru detalii suplimentare.

Pentru a aștepta un semnal, BSD și System V au furnizat o funcție numită sigpause(3), dar această funcție are un argument diferit pe cele două sisteme. Consultați sigpause(3) pentru detalii.

ERORI
Înainte de glibc 2.2, sigset() nu debloca sig dacă disp era specificat ca o valoare diferită de SIG_HOLD.

Înainte de glibc 2.5, sigset() nu returnează corect dispoziția anterioară a semnalului în două cazuri. În primul rând, dacă disp este specificat ca SIG_HOLD, atunci un sigset() reușit returnează întotdeauna SIG_HOLD. În schimb, ar trebui să returneze dispoziția anterioară a semnalului (cu excepția cazului în care semnalul a fost blocat, caz în care ar trebui returnat SIG_HOLD). În al doilea rând, dacă semnalul este în prezent blocat, atunci valoarea returnată de un sigset() reușit ar trebui să fie SIG_HOLD. În schimb, este returnată dispoziția anterioară a semnalului. Aceste probleme au fost rezolvate începând cu glibc 2.5.

CONSULTAȚI ȘI
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3), sigpause(3), sigvec(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.