Provided by: manpages-ro-dev_4.23.1-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.8                      2 mai 2024                                 pthread_sigmask(3)