Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       pthread_sigmask - examinează și schimbă masca semnalelor blocate

BIBLIOTECA

       Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

SINOPSIS

       #include <signal.h>

       int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset);

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

       pthread_sigmask():
           _POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500

DESCRIERE

       Funcția  pthread_sigmask()  este la fel ca sigprocmask(2), cu diferența că utilizarea sa în programele cu
       mai multe fire este specificată în mod explicit de POSIX.1. Alte diferențe sunt notate în această pagină.

       Pentru o  descriere  a  argumentelor  și  a  modului  de  funcționare  a  acestei  funcții,  a  se  vedea
       sigprocmask(2).

VALOAREA RETURNATĂ

       În caz de succes, pthread_sigmask() returnează 0; în caz de eroare, returnează un număr de eroare.

ERORI-IEȘIRE

       A se vedea sigprocmask(2).

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ pthread_sigmask()                                                       │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.

NOTE

       Un nou fir moștenește o copie a măștii de semnal a creatorului său.

       Funcția  glibc  pthread_sigmask()  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 firelor NPTL. A se vedea nptl(7) pentru detalii.

EXEMPLE

       Programul de mai jos blochează unele semnale în firul principal și apoi creează un fir dedicat  pentru  a
       prelua aceste semnale prin sigwait(3). Următoarea sesiune shell demonstrează 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 <errno.h>
       #include <pthread.h>
       #include <signal.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       /* Funcții 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;

           /* Blochează SIGQUIT și SIGUSR1; alte fire create de main()
              vor moșteni o copie a măștii 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 continuă să creeze alte fire și/sau să facă
              alte lucrări. */

           pause();            /* Pauză fictivă pentru a putea testa programul */
       }

CONSULTAȚI Ș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   î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.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                               pthread_sigmask(3)