oracular (3) exit.3.gz

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

NUME

       exit - provoacă încheierea normală a procesului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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

       C11, POSIX.1-2008.

ISTORIC

       C89, POSIX.1-2001, 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   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⟩.