pthread_sigmask(3) Library Functions Manual pthread_sigmask(3) NUME pthread_sigmask - examineaza i schimba masca semnalelor blocate BIBLIOTECA Biblioteca de fire de execuie POSIX (libpthread, -lpthread) REZUMAT #include int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): pthread_sigmask(): _POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500 DESCRIERE Funcia pthread_sigmask() este la fel ca sigprocmask(2), cu diferena ca utilizarea sa in programele cu mai multe fire este specificata in mod explicit de POSIX.1. Alte diferene sunt notate in aceasta pagina. Pentru o descriere a argumentelor i a modului de funcionare a acestei funcii, a se vedea sigprocmask(2). VALOAREA RETURNATA In caz de succes, pthread_sigmask() returneaza 0; in caz de eroare, returneaza un numar de eroare. ERORI-IEIRE A se vedea sigprocmask(2). ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |pthread_sigmask() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001. NOTE Un nou fir motenete o copie a matii de semnal a creatorului sau. Funcia glibc pthread_sigmask() ignora in tacere incercarile de a bloca cele doua semnale in timp real care sunt utilizate in mod intern de catre implementarea firelor NPTL. A se vedea nptl(7) pentru detalii. EXEMPLE Programul de mai jos blocheaza unele semnale in firul principal i apoi creeaza un fir dedicat pentru a prelua aceste semnale prin sigwait(3). Urmatoarea sesiune shell demonstreaza utilizarea sa: $ ./a.out & [1] 5423 $ kill -QUIT %1 Firul de gestionare a semnalelor a primit semnalul 3 $ kill -USR1 %1 Firul de gestionare a semnalelor a primit semnalul 10 $ kill -TERM %1 [1]+ Terminat ./a.out Sursa programului #include #include #include #include #include #include /* Funcii simple de gestionare a erorilor */ #define handle_error_en(en, msg) \ do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) static void * sig_thread(void *arg) { sigset_t *set = arg; int s, sig; for (;;) { s = sigwait(set, &sig); if (s != 0) handle_error_en(s, "sigwait"); printf("Firul de gestionare a semnalelor a primit semnalul %d\n", sig); } } int main(void) { pthread_t thread; sigset_t set; int s; /* Blocheaza SIGQUIT i SIGUSR1; alte fire create de main() vor moteni o copie a matii de semnal. */ sigemptyset(&set); sigaddset(&set, SIGQUIT); sigaddset(&set, SIGUSR1); s = pthread_sigmask(SIG_BLOCK, &set, NULL); if (s != 0) handle_error_en(s, "pthread_sigmask"); s = pthread_create(&thread, NULL, &sig_thread, &set); if (s != 0) handle_error_en(s, "pthread_create"); /* Firul principal continua sa creeze alte fire i/sau sa faca alte lucrari. */ pause(); /* Pauza fictiva pentru a putea testa programul */ } CONSULTAI I sigaction(2), sigpending(2), sigprocmask(2), pthread_attr_setsigmask_np(3), pthread_create(3), pthread_kill(3), sigsetops(3), pthreads(7), signal(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 pthread_sigmask(3)