table of contents
sigprocmask(2) | System Calls Manual | sigprocmask(2) |
NUME¶
sigprocmask, rt_sigprocmask, rt_sigprocmask - examinează și modifică semnalele blocate
BIBLIOTECA¶
Biblioteca C standard (libc, -lc)
SINOPSIS¶
#include <signal.h>
/* Prototip pentru funcția de învăluire glibc */ int sigprocmask(int how, const sigset_t *_Nullable restrict set, sigset_t *_Nullable restrict oldset);
#include <signal.h> /* Definiția constantelor SIG_* */ #include <sys/syscall.h> /* Definiția constantelor SYS_* */ #include <unistd.h>
/* Prototip pentru apelul de sistem subiacent */ int syscall(SYS_rt_sigprocmask, int how, const kernel_sigset_t *_Nullable set, kernel_sigset_t *_Nullable oldset, size_t sigsetsize);
/* Prototip pentru apelul de sistem vechi */ [[depreciat]] int syscall(SYS_sigprocmask, int how, const old_kernel_sigset_t *_Nullable set, old_kernel_sigset_t *_Nullable oldset);
sigprocmask():
_POSIX_C_SOURCE
DESCRIERE¶
sigprocmask() este utilizat pentru a prelua și/sau modifica masca de semnal a firului apelant. Masca de semnal este setul de semnale a căror livrare este blocată în prezent pentru apelant (a se vedea, de asemenea, signal(7) pentru mai multe detalii).
Comportamentul apelului depinde de valoarea lui how, după cum urmează.
- SIG_BLOCK
- Setul de semnale blocate este uniunea dintre setul curent și argumentul set.
- SIG_UNBLOCK
- Semnalele din set sunt eliminate din setul curent de semnale blocate. Este permisă încercarea de deblocare a unui semnal care nu este blocat.
- SIG_SETMASK
- Setul de semnale blocate este stabilit la argumentul set.
Dacă oldset nu este NULL, valoarea anterioară a măștii de semnal este stocată în oldset.
Dacă set este NULL, atunci masca de semnal este neschimbată (adică how este ignorat), dar valoarea curentă a măștii de semnal este totuși returnată în oldset (dacă nu este NULL).
Un set de funcții pentru modificarea și inspectarea variabilelor de tip sigset_t („seturi de semnale”) este descris în sigsetops(3).
Utilizarea lui sigprocmask() este nespecificată într-un proces cu mai multe fire; a se vedea pthread_sigmask(3).
VALOAREA RETURNATö
sigprocmask() returnează 0 în caz de succes. În caz de eșec, se returnează -1, iar errno este configurată pentru a indica eroarea.
ERORI-IEȘIRE¶
VERSIUNI¶
Diferențe între biblioteca C și nucleu¶
Definiția nucleului pentru sigset_t diferă în ceea ce privește dimensiunea față de cea utilizată de biblioteca C. În această pagină de manual, prima este denumită kernel_sigset_t (este cu toate acestea denumită sigset_t în sursele nucleului).
Funcția glibc pentru sigprocmask() ignoră în tăcere încercările de a bloca cele două semnale în timp real care sunt utilizate în mod intern de către implementarea NPTL threading. A se vedea nptl(7) pentru detalii.
Apelul original al sistemului Linux a fost numit sigprocmask(). Cu toate acestea, odată cu adăugarea semnalelor în timp real în Linux 2.2, tipul de dimensiune fixă, pe 32 de biți sigset_t (denumit old_kernel_sigset_t în această pagină de manual), acceptat de acest apel de sistem, nu mai era adecvat scopului. În consecință, a fost adăugat un nou apel de sistem, rt_sigprocmask(), pentru a permite acceptarea unui tip sigset_t mărit (denumit kernel_sigset_t în această pagină de manual). Noul apel de sistem primește un al patrulea argument, size_t sigsetsize, care specifică dimensiunea în octeți a seturilor de semnale din set și oldset. În prezent, se cere ca acest argument să aibă o valoare fixă specifică arhitecturii (egală cu sizeof(kernel_sigset_t)).
Funcția de învăluire glibc sigprocmask() ascunde aceste detalii de noi, apelând în mod transparent rt_sigprocmask() atunci când nucleul o furnizează.
STANDARDE¶
POSIX.1-2008.
ISTORIC¶
POSIX.1-2001.
NOTE¶
Nu este posibil să se blocheze SIGKILL sau SIGSTOP. Încercările de a face acest lucru sunt ignorate în tăcere.
Fiecare dintre firele de execuție dintr-un proces are propria mască de semnal.
Un copil creat prin fork(2) moștenește o copie a măștii de semnal a părintelui său; masca de semnal este păstrată în execve(2).
Dacă SIGBUS, SIGFPE, SIGILL sau SIGSEGV sunt generate în timp ce sunt blocate, rezultatul este nedefinit, cu excepția cazului în care semnalul a fost generat de kill(2), sigqueue(3) sau raise(3).
A se vedea sigsetops(3) pentru detalii privind manipularea seturilor de semnale.
Rețineți că este permisă (deși nu este foarte utilă) specificarea atât a lui set, cât și a lui oldset ca fiind NULL.
CONSULTAȚI ȘI¶
kill(2), pause(2), sigaction(2), signal(2), sigpending(2), sigsuspend(2), pthread_sigmask(3), sigqueue(3), sigsetops(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) |