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

NUME

       sigwaitinfo,  sigtimedwait,  rt_sigtimedwait  -  așteaptă  în  mod  sincron pentru semnalele din coada de
       așteptare

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <signal.h>

       int sigwaitinfo(const sigset_t *restrict set,
                       siginfo_t *_Nullable restrict info);
       int sigtimedwait(const sigset_t *restrict set,
                       siginfo_t *_Nullable restrict info,
                       const struct timespec *restrict timeout);

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

       sigwaitinfo(), sigtimedwait():
           _POSIX_C_SOURCE >= 199309L

DESCRIERE

       sigwaitinfo() suspendă execuția firului  apelant  până  când  unul  dintre  semnalele  din  set  este  în
       așteptare; (dacă unul dintre semnalele din set este deja în așteptare pentru firul apelant, sigwaitinfo()
       returnează imediat).

       sigwaitinfo()  elimină  semnalul  din  setul  de semnale în așteptare și returnează numărul semnalului ca
       rezultat al funcției sale. Dacă argumentul siginfo nu este NULL, atunci memoria  tampon  la  care  acesta
       indică  este  utilizată  pentru  a  returna  o  structură de tip siginfo_t (a se vedea sigaction(2)) care
       conține informații despre semnal.

       În cazul în care mai multe semnale din set sunt în așteptare pentru apelant, semnalul care este recuperat
       de sigwaitinfo() este determinat în conformitate cu regulile obișnuite de ordonare; a se vedea  signal(7)
       pentru mai multe detalii.

       sigtimedwait()  funcționează  exact  în  același  mod ca și sigwaitinfo(), cu excepția faptului că are un
       argument suplimentar, timeout, care specifică intervalul pentru care firul este suspendat  în  așteptarea
       unui  semnal;  (acest interval va fi rotunjit la granularitatea (gradul de finețe al) ceasului de sistem,
       iar întârzierile de programare  ale  nucleului  înseamnă  că  intervalul  poate  fi  depășit  cu  o  mică
       cantitate). Acest argument este o structură timespec(3).

       În  cazul  în  care  ambele  câmpuri  ale acestei structuri sunt specificate ca fiind 0, se efectuează un
       sondaj: sigtimedwait() revine imediat, fie cu informații despre un semnal care era  în  așteptare  pentru
       apelant, fie cu o eroare dacă niciunul dintre semnalele din set nu era în așteptare.

VALOAREA RETURNATĂ

       În  caz  de  succes,  atât  sigwaitinfo(),  cât  și sigtimedwait() returnează un număr de semnal (adică o
       valoare mai mare decât zero). În caz de eșec, ambele apeluri returnează -1, cu errno configurată pentru a
       indica eroarea.

ERORI-IEȘIRE

       EAGAIN Niciun semnal din set nu a devenit în așteptare în perioada timeout specificată la sigtimedwait().

       EINTR  Așteptarea a fost întreruptă de un gestionar de semnal; a se vedea signal(7); (acest gestionar era
              pentru un alt semnal decât unul dintre cele din set).

       EINVAL timeout nu a fost valid.

VERSIUNI

   Diferențe între biblioteca C și nucleu
       În Linux, sigwaitinfo() este o funcție de bibliotecă implementată pe lângă sigtimedwait().

       Funcțiile glibc pentru sigwaitinfo() și sigtimedwait() ignoră în tăcere încercările  de  a  aștepta  cele
       două  semnale  în  timp real care sunt utilizate în mod intern de către implementarea de fire de execuție
       „NPTL threading”. A se vedea nptl(7) pentru detalii.

       Apelul de sistem original din Linux a fost numit sigtimedwait(). 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 acceptat de acest
       apel de sistem nu mai era potrivit scopului. În consecință,  a  fost  adăugat  un  nou  apel  de  sistem,
       rt_sigtimedwait(),  pentru  a  suporta un tip sigset_t mărit. Noul apel de sistem primește un al patrulea
       argument, size_t sigsetsize, care specifică dimensiunea în octeți  a  setului  de  semnale  din  set.  În
       prezent, acest argument trebuie să aibă valoarea sizeof(sigset_t) (în caz contrar, apare eroarea EINVAL).
       Funcția  de  învăluire  glibc  sigtimedwait()  ne  ascunde  aceste  detalii,  apelând  în mod transparent
       rt_sigtimedwait() atunci când nucleul o furnizează.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.

NOTE

       În mod normal, programul apelant blochează semnalele din set printr-un apel  anterior  la  sigprocmask(2)
       (astfel  încât  dispoziția  implicită  pentru  aceste semnale să nu apară dacă acestea devin în așteptare
       între apelurile succesive la sigwaitinfo() sau sigtimedwait()) și nu stabilește gestionari pentru  aceste
       semnale.  Într-un  program  cu  mai  multe  fire  de execuție, semnalul trebuie blocat în toate firele de
       execuție, pentru a preveni ca semnalul să fie tratat în conformitate cu dispoziția sa  implicită  într-un
       alt fir de execuție decât cel care apelează sigwaitinfo() sau sigtimedwait()).

       Setul  de  semnale  care  este în așteptare pentru un anumit fir de execuție este uniunea dintre setul de
       semnale care este în așteptare în mod specific pentru acel fir de execuție și setul de semnale care  este
       în așteptare pentru întregul proces (a se vedea signal(7)).

       Încercările de a aștepta SIGKILL și SIGSTOP sunt ignorate în tăcere.

       În  cazul în care mai multe fire ale unui proces sunt blocate în așteptarea aceluiași semnal (semnale) în
       sigwaitinfo() sau sigtimedwait(), atunci exact unul dintre fire va primi  efectiv  semnalul  dacă  acesta
       devine în așteptare pentru întregul proces; care dintre fire primește semnalul este nedeterminat.

       sigwaitinfo()  sau  sigtimedwait(),  nu pot fi utilizate pentru a primi semnale care sunt generate în mod
       sincron, cum ar fi semnalul SIGSEGV care rezultă din  accesarea  unei  adrese  de  memorie  invalidă  sau
       semnalul  SIGFPE care rezultă dintr-o eroare aritmetică. Astfel de semnale pot fi recepționate numai prin
       intermediul unui gestionar de semnal.

       POSIX lasă nespecificată semnificația unei valori NULL  pentru  argumentul  timeout  din  sigtimedwait(),
       permițând  posibilitatea  ca  acest  lucru  să  aibă aceeași semnificație ca un apel la sigwaitinfo() și,
       într-adevăr, acest lucru este ceea ce se face sub Linux.

CONSULTAȚI ȘI

       kill(2), sigaction(2), signal(2), signalfd(2), sigpending(2), sigprocmask(2), sigqueue(3),  sigsetops(3),
       sigwait(3), timespec(3), signal(7), time(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                    2 mai 2024                                     sigwaitinfo(2)