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

NUME

       sigreturn, rt_sigreturn, rt_sigreturn - returnează de la gestionarul de semnal și curăță cadrul stivei

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       int sigreturn(...);

DESCRIERE

       Dacă  nucleul Linux determină că un semnal deblocat este în așteptare pentru un semnal de proces, atunci,
       la următoarea tranziție înapoi la modul utilizator în acel proces (de ex. de exemplu, la revenirea de  la
       un apel de sistem sau atunci când procesul este reprogramat pe CPU), acesta creează un nou cadru pe stiva
       din  spațiul de utilizator în care salvează diferite elemente ale contextului procesului (cuvânt de stare
       al procesorului, registre, semnal mască și parametrii stivei de semnale).

       De asemenea, nucleul face în așa fel încât, în timpul tranziției  înapoi  la  modul  utilizator,  să  fie
       apelat  gestionarul  de  semnal  și,  la  revenirea de la gestionarul de semnal, controlul să treacă la o
       bucată de cod din spațiul utilizatorului, numită în mod obișnuit „trambulina de semnal”.  La rândul  său,
       codul de trambulină de semnal apelează sigreturn().

       Acest  apel  sigreturn()  anulează  tot  ceea  ce  s-a  făcut—modificarea  măștii de semnal a procesului,
       comutarea stivei de  semnale  (a  se  vedea  sigaltstack(2))——pentru  a  invoca  gestionarul  de  semnal.
       Utilizând  informațiile  care  au  fost salvate anterior pe stiva din spațiul utilizatorului, sigreturn()
       restabilește masca  de  semnal  a  procesului,  schimbă  stivele  și  restabilește  contextul  procesului
       (fanioanele  și  registrele  procesorului, inclusiv indicatorul de stivă și indicatorul de instrucțiuni),
       astfel încât procesul își reia execuția în punctul în care a fost întrerupt de semnal.

VALOAREA RETURNATĂ

       sigreturn() nu returnează niciodată.

VERSIUNI

       Multe sisteme de tip UNIX au un apel de sistem sigreturn() sau aproape  echivalent.   Cu  toate  acestea,
       acest  apel nu este specificat în POSIX, iar detaliile privind comportamentul său variază de la un sistem
       la altul.

STANDARDE

       Niciunul.

NOTE

       sigreturn() există doar pentru a permite implementarea gestionarilor de semnal.  Nu ar  trebui  niciodată
       să  fie  apelat  direct.   (Într-adevăr,  un simplu sigretreturn() din biblioteca GNU C returnează pur și
       simplu -1, cu errno configurată la ENOSYS).  Detaliile privind argumentele (dacă există) transmise  către
       sigretreturn()   variază   în  funcție  de  arhitectură.   (Pe  unele  arhitecturi,  cum  ar  fi  x86-64,
       sigretreturn() nu  acceptă  niciun  argument,  deoarece  toate  informațiile  de  care  are  nevoie  sunt
       disponibile  în  cadrul  stivei  care  a  fost  creată  anterior  de  către  nucleu  pe stiva din spațiul
       utilizatorului).

       Mai demult, sistemele UNIX plasau codul de trambulină de semnal pe  stiva  utilizatorului.   În  prezent,
       paginile  din  stiva utilizatorului sunt protejate astfel încât să nu permită executarea de cod.  Astfel,
       pe sistemele Linux contemporane, în funcție de arhitectură, codul de trambulină de semnal se află fie  în
       vdso(7),  fie  în biblioteca C.  În acest din urmă caz, funcția de învăluire sigaction(2) a bibliotecii C
       informează nucleul cu privire la locația codului de trambulină  prin  plasarea  adresei  sale  în  câmpul
       sa_restorer al structurii sigaction și activează fanionul SA_RESTORER în câmpul sa_flags.

       Informațiile  salvate  despre  contextul  procesului sunt plasate într-o structură ucontext_t (a se vedea
       <sys/ucontext.h>).  Această structură este vizibilă în cadrul  gestionarului  de  semnal  ca  al  treilea
       argument al unui gestionar stabilit prin sigaction(2) cu fanionul SA_SIGINFO.

       Pe  alte sisteme UNIX, funcționarea trambulinei de semnal diferă puțin.  În special, pe unele sisteme, la
       revenirea la modul utilizator, nucleul transmite controlul către  trambulină  (mai  degrabă  decât  către
       gestionarul  de  semnal),  iar  codul  trambulinei  apelează  gestionarul  de  semnal  (și  apoi apelează
       sigreturn() odată ce gestionarul returnează).

   Diferențe între biblioteca C și nucleu
       Apelul de sistem original din Linux a fost numit sigreturn().   Cu  toate  acestea,  odată  cu  adăugarea
       semnalelor  în  timp  real  în  Linux 2.2, a fost adăugat un nou apel de sistem, rt_sigreturn(), pentru a
       suporta un tip sigset_t extins.  Biblioteca GNU C ne ascunde aceste detalii, utilizând în mod transparent
       rt_sigreturn() atunci când nucleul îl furnizează.

CONSULTAȚI ȘI

       kill(2), restart_syscall(2), sigaltstack(2), signal(2), getcontext(3), signal(7), vdso(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                                       sigreturn(2)