Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       exit - provoacă încheierea normală a procesului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <stdlib.h>

       [[noreturn]] void exit(int status);

DESCRIERE

       Funcția  exit()  provoacă  terminarea normală a procesului, iar cel mai puțin semnificativ
       octet din status (de exemplu,  status  &  0xFF)  este  returnat  părintelui  (a  se  vedea
       wait(2)).

       Toate funcțiile înregistrate cu atexit(3) și on_exit(3) sunt apelate, în ordinea inversă a
       înregistrării lor; (este posibil ca una dintre aceste funcții să utilizeze  atexit(3)  sau
       on_exit(3)  pentru  a  înregistra  o  funcție suplimentară care să fie executată în timpul
       procesării de ieșire; noua înregistrare este adăugată în fruntea listei  de  funcții  care
       rămân  să fie apelate). Dacă una dintre aceste funcții nu returnează (de exemplu, apelează
       _exit(2) sau se sinucide cu un semnal), atunci niciuna dintre  funcțiile  rămase  nu  este
       apelată,  iar  procesarea  ulterioară  a ieșirii (în special, golirea fluxurilor stdio(3))
       este abandonată. În cazul în care o funcție a  fost  înregistrată  de  mai  multe  ori  cu
       ajutorul  atexit(3)  sau  on_exit(3), atunci aceasta este apelată de atâtea ori câte ori a
       fost înregistrată.

       Toate fluxurile stdio(3) deschise sunt golite și închise.  Fișierele create de  tmpfile(3)
       sunt eliminate.

       Standardul C specifică două constante, EXIT_SUCCESS și EXIT_FAILURE, care pot fi transmise
       la exit() pentru a indica terminarea cu succes sau, respectiv, fără succes.

VALOAREA RETURNATĂ

       Funcția exit() nu returnează.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────┬───────────────────┬─────────────────────┐
       │InterfațăAtributValoare             │
       ├───────────────────────────────────────────────┼───────────────────┼─────────────────────┤
       │exit()                                         │ Siguranța firelor │ MT-Unsafe race:exit │
       └───────────────────────────────────────────────┴───────────────────┴─────────────────────┘

       Funcția exit() utilizează o variabilă globală care nu este protejată, deci nu este  sigură
       pentru fire de execuție.

STANDARDE

       POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

NOTE

       Comportamentul  este  nedefinit  în  cazul  în  care  una dintre funcțiile înregistrate cu
       atexit(3) și on_exit(3) apelează fie exit(), fie  longjmp(3).   Rețineți  că  un  apel  la
       execve(2) elimină înregistrările create cu ajutorul atexit(3) și on_exit(3).

       Utilizarea  lui  EXIT_SUCCESS  și  EXIT_FAILURE  este  puțin mai ușor de adaptat (în medii
       non-UNIX) decât utilizarea lui 0 și a unor valori diferite de zero, cum ar fi 1 sau -1. În
       special, VMS utilizează o convenție diferită.

       BSD  a încercat să standardizeze codurile de ieșire (pe care unele biblioteci C, cum ar fi
       biblioteca GNU C, le-au adoptat de asemenea); a se vedea fișierul <sysexits.h>.

       După exit(), starea de ieșire trebuie să fie transmisă  procesului  părinte.  Există  trei
       cazuri:

       •  În  cazul  în care părintele a stabilit SA_NOCLDWAIT sau a stabilit gestionarul SIGCHLD
          la SIG_IGN, starea este eliminată și copilul moare imediat.

       •  În cazul în care părintele aștepta copilul, acesta este notificat cu privire la  starea
          de ieșire și copilul moare imediat.

       •  În  caz  contrar,  procesul  copil  devine  un  proces  „zombi”, majoritatea resurselor
          procesului sunt reciclate, dar în tabela de procese se păstrează un slot  care  conține
          informații minime despre procesul copil (starea de terminare, statistici de utilizare a
          resurselor). Acest lucru permite  părintelui  să  utilizeze  ulterior  waitpid(2)  (sau
          similar)  pentru  a afla starea de terminare a procesului copil; în acel moment, slotul
          procesului „zombi” este eliberat.

       În cazul în  care  implementarea  acceptă  semnalul  SIGCHLD,  acest  semnal  este  trimis
       părintelui.   În  cazul  în  care părintele a definit SA_NOCLDWAIT, acesta nu se definește
       dacă se trimite un semnal SIGCHLD.

   Semnale trimise către alte procese
       În cazul în care procesul care iese este un lider de sesiune și terminalul său de  control
       este  terminalul  de  control al sesiunii, atunci fiecare proces din grupul de procese din
       prim-plan al acestui terminal de control primește un semnal SIGHUP,  iar  terminalul  este
       disociat  de  această sesiune, permițând ca acesta să fie achiziționat de un nou proces de
       control.

       În cazul în care ieșirea procesului face ca un grup de procese să  devină  orfan  și  dacă
       oricare  membru al grupului de procese nou-orfan este oprit, atunci un semnal SIGHUP urmat
       de un semnal SIGCONT va fi trimis fiecărui proces din acest grup de procese.  A  se  vedea
       setpgid(2) pentru o explicație privind grupurile de procese orfane.

       Cu  excepția  cazurilor de mai sus, în care procesele semnalate pot fi copii ai procesului
       care se termină, terminarea unui proces nu determină în  general  trimiterea  unui  semnal
       către  copiii  acelui  proces. Cu toate acestea, un proces poate utiliza operația prctl(2)
       PR_SET_PDEATHSIG pentru a face în așa fel încât să primească un semnal în  cazul  în  care
       părintele său termină.

CONSULTAȚI ȘI

       _exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)

TRADUCERE

       Traducerea  în  limba  română  a  acestui  manual  a  fost  creată  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⟩.