oracular (7) sigevent.7.gz

Provided by: manpages-ro_4.22.0-1_all bug

NUME

       sigevent - structură pentru notificarea de la rutinele asincrone

REZUMAT

       #include <signal.h>

       union sigval {            /* Date transmise cu notificarea */
           int     sival_int;    /* Valoare de număr întreg */
           void   *sival_ptr;    /* Valoarea indicatorului */
       };

       struct sigevent {
           int    sigev_notify;  /* Metoda de notificare */
           int    sigev_signo;   /* Semnalul de notificare */
           union sigval sigev_value;
                                 /* Date transmise cu notificarea */
           void (*sigev_notify_function)(union sigval);
                                 /* Funcția utilizată pentru firul
                                    notificării (SIGEV_THREAD) */
           void  *sigev_notify_attributes;
                                 /* Atribute pentru firul de notificare
                                    (SIGEV_THREAD) */
           pid_t  sigev_notify_thread_id;
                                 /* ID-ul firului pentru semnal
                                    (SIGEV_THREAD_ID); specific Linux */
       };

DESCRIERE

       Structura  sigevent  este  utilizată  de diverse API-uri pentru a descrie modul în care un
       proces trebuie să fie notificat cu privire la un eveniment (de exemplu,  finalizarea  unei
       cereri asincrone, expirarea unui cronometru sau sosirea unui mesaj).

       Definiția  prezentată  în  REZUMAT este aproximativă: unele dintre câmpurile din structura
       sigevent pot fi definite ca parte a unei uniuni. Programele ar trebui să  utilizeze  numai
       acele câmpuri relevante pentru valoarea specificată în sigev_notify.

       Câmpul  sigev_notify  specifică  modul  în care trebuie efectuată notificarea.  Acest câmp
       poate avea una dintre următoarele valori:

       SIGEV_NONE
              O notificare „nulă”: nu face nimic atunci când are loc evenimentul.

       SIGEV_SIGNAL
              Notifică procesul prin trimiterea semnalului specificat în sigev_signo.

              În cazul în care semnalul este  prins  cu  un  gestionar  de  semnal  care  a  fost
              înregistrat  cu  ajutorul  fanionului  sigaction(2)  SA_SIGINFO, atunci următoarele
              câmpuri sunt definite în structura siginfo_t  care  este  transmisă  ca  al  doilea
              argument al gestionarului:

              si_code   Acest  câmp este definit la o valoare care depinde de API care furnizează
                        notificarea.

              si_signo  Acest câmp este stabilit la numărul semnalului (adică aceeași valoare  ca
                        în sigev_signo).

              si_value  Acest câmp este stabilit la valoarea specificată în sigev_value.

              În funcție de API, în structura siginfo_t pot fi definite și alte câmpuri.

              Aceleași  informații  sunt  disponibile  și în cazul în care semnalul este acceptat
              folosind sigwaitinfo(2).

       SIGEV_THREAD
              Notifică procesul prin invocarea sigev_notify_function „ca și cum” ar fi funcția de
              pornire  a  unui  nou  fir;  (printre posibilitățile de implementare aici se numără
              faptul că fiecare notificare a cronometrului ar putea duce la crearea unui nou  fir
              sau  că  se  creează un singur fir pentru a primi toate notificările). Funcția este
              invocată   cu   sigev_valoare   ca   unic    argument.     n    cazul    în    care
              sigev_notify_attributes  nu  este  NULL,  acesta  ar  trebui  să indice o structură
              pthread_attr_attr_t  care  definește  atributele  pentru  noul  fir  (a  se   vedea
              pthread_attr_init(3)).

       SIGEV_THREAD_ID (specific-Linux)
              În prezent este utilizat numai de cronometrele POSIX; a se vedea timer_create(2).

CONSULTAȚI ȘI

       timer_create(2), aio_fsync(3), aio_read(3), aio_write(3), getaddrinfo_a(3), lio_listio(3),
       mq_notify(3), aio(7), pthreads(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⟩.