exit(3) Library Functions Manual exit(3) NUME exit - provoaca incheierea normala a procesului BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include [[noreturn]] void exit(int status); DESCRIERE Funcia exit() provoaca terminarea normala a procesului, iar cel mai puin semnificativ octet din status (de exemplu, status & 0xFF) este returnat parintelui (a se vedea wait(2)). Toate funciile inregistrate cu atexit(3) i on_exit(3) sunt apelate, in ordinea inversa a inregistrarii lor; (este posibil ca una dintre aceste funcii sa utilizeze atexit(3) sau on_exit(3) pentru a inregistra o funcie suplimentara care sa fie executata in timpul procesarii de ieire; noua inregistrare este adaugata in fruntea listei de funcii care raman sa fie apelate). Daca una dintre aceste funcii nu returneaza (de exemplu, apeleaza _exit(2) sau se sinucide cu un semnal), atunci niciuna dintre funciile ramase nu este apelata, iar procesarea ulterioara a ieirii (in special, golirea fluxurilor stdio(3)) este abandonata. In cazul in care o funcie a fost inregistrata de mai multe ori cu ajutorul atexit(3) sau on_exit(3), atunci aceasta este apelata de atatea ori cate ori a fost inregistrata. Toate fluxurile stdio(3) deschise sunt golite i inchise. Fiierele create de tmpfile(3) sunt eliminate. Standardul C specifica doua constante, EXIT_SUCCESS i EXIT_FAILURE, care pot fi transmise la exit() pentru a indica terminarea cu succes sau, respectiv, fara succes. VALOAREA RETURNATA Funcia exit() nu returneaza. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------+---------------------+---------------------+ |Interfaa | Atribut | Valoare | +--------------------------+---------------------+---------------------+ |exit() | Sigurana firelor | MT-Unsafe race:exit | +--------------------------+---------------------+---------------------+ Funcia exit() utilizeaza o variabila globala care nu este protejata, deci nu este sigura pentru fire de execuie. STANDARDE C11, POSIX.1-2008. ISTORIC C89, POSIX.1-2001, SVr4, 4.3BSD. NOTE Comportamentul este nedefinit in cazul in care una dintre funciile inregistrate cu atexit(3) i on_exit(3) apeleaza fie exit(), fie longjmp(3). Reinei ca un apel la execve(2) elimina inregistrarile create cu ajutorul atexit(3) i on_exit(3). Utilizarea lui EXIT_SUCCESS i EXIT_FAILURE este puin mai uor de adaptat (in medii non-UNIX) decat utilizarea lui 0 i a unor valori diferite de zero, cum ar fi 1 sau -1. In special, VMS utilizeaza o convenie diferita. BSD a incercat sa standardizeze codurile de ieire (pe care unele biblioteci C, cum ar fi biblioteca GNU C, le-au adoptat de asemenea); a se vedea fiierul . Dupa exit(), starea de ieire trebuie sa fie transmisa procesului parinte. Exista trei cazuri: o In cazul in care parintele a stabilit SA_NOCLDWAIT sau a stabilit gestionarul SIGCHLD la SIG_IGN, starea este eliminata i copilul moare imediat. o In cazul in care parintele atepta copilul, acesta este notificat cu privire la starea de ieire i copilul moare imediat. o In caz contrar, procesul copil devine un proces ,,zombi", majoritatea resurselor procesului sunt reciclate, dar in tabela de procese se pastreaza un slot care conine informaii minime despre procesul copil (starea de terminare, statistici de utilizare a resurselor). Acest lucru permite parintelui sa utilizeze ulterior waitpid(2) (sau similar) pentru a afla starea de terminare a procesului copil; in acel moment, slotul procesului ,,zombi" este eliberat. In cazul in care implementarea accepta semnalul SIGCHLD, acest semnal este trimis parintelui. In cazul in care parintele a definit SA_NOCLDWAIT, acesta nu se definete daca se trimite un semnal SIGCHLD. Semnale trimise catre alte procese In cazul in care procesul care iese este un lider de sesiune i terminalul sau de control este terminalul de control al sesiunii, atunci fiecare proces din grupul de procese din prim-plan al acestui terminal de control primete un semnal SIGHUP, iar terminalul este disociat de aceasta sesiune, permiand ca acesta sa fie achiziionat de un nou proces de control. In cazul in care ieirea procesului face ca un grup de procese sa devina orfan i daca oricare membru al grupului de procese nou-orfan este oprit, atunci un semnal SIGHUP urmat de un semnal SIGCONT va fi trimis fiecarui proces din acest grup de procese. A se vedea setpgid(2) pentru o explicaie privind grupurile de procese orfane. Cu excepia cazurilor de mai sus, in care procesele semnalate pot fi copii ai procesului care se termina, terminarea unui proces nu determina in general trimiterea unui semnal catre copiii acelui proces. Cu toate acestea, un proces poate utiliza operaia prctl(2) PR_SET_PDEATHSIG pentru a face in aa fel incat sa primeasca un semnal in cazul in care parintele sau termina. CONSULTAI I _exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 exit(3)