_exit(2)

NUME
_exit, _Exit - termină procesul apelant

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <unistd.h>

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

#include <stdlib.h>

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

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

_Exit():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

DESCRIERE
_exit() încheie „imediat” procesul apelant. Orice descriptor de fișier deschis aparținând procesului este închis. Eventualii copii ai procesului sunt moșteniți de init(1) (sau de cel mai apropiat proces de „subreaper” (subcolectare), așa cum este definit prin utilizarea operației prctl(2) PR_SET_CHILD_SUBREAPER). Părintelui procesului i se trimite un semnal SIGCHLD.

Valoarea status & 0xFF este returnată procesului părinte ca stare de ieșire a procesului și poate fi colectată de către procesul părinte folosind unul dintre apelurile din familia wait(2).

Funcția _Exit() este echivalentă cu _exit().

VALOAREA RETURNATĂ
Aceste funcții nu returnează nicio valoare.

STANDARDE

_exit()
    POSIX.1-2008.

_Exit()
    C11, POSIX.1-2008.

ISTORIC
POSIX.1-2001, SVr4, 4.3BSD.

_Exit() a fost introdus de C99.

NOTE
Pentru o discuție privind efectele unei ieșiri, transmiterea stării de ieșire, procesele zombi, semnalele trimise și așa mai departe, a se vedea exit(3).

Funcția _exit() este ca exit(3), dar nu apelează nicio funcție înregistrată cu atexit(3) sau on_exit(3). Fluxurile stdio(3) deschise nu sunt șterse. Pe de altă parte, _exit() închide descriptorii de fișiere deschise, iar acest lucru poate cauza o întârziere necunoscută, așteptând ca ieșirea în așteptare să se termine. Dacă întârzierea nu este dorită, poate fi utilă apelarea unor funcții precum tcflush(3) înainte de a apela _exit(). Dacă orice intrare/ieșire în așteptare este anulată și care intrare/ieșire în așteptare poate fi anulată la _exit(), depinde de implementare.

  Diferențe între biblioteca C și nucleu
Textul de mai sus din DESCRIERE descrie efectul tradițional al _exit(), care este de a termina un proces, iar acestea sunt semanticile specificate de POSIX.1 și implementate de funcția de învăluire a bibliotecii C. În sistemele moderne, acest lucru înseamnă terminarea tuturor firelor de execuție din proces.

Spre deosebire de funcția de învăluire a bibliotecii C, apelul de sistem _exit() din Linux termină doar firul apelant, iar acțiuni precum „înfierea” proceselor copil sau trimiterea SIGCHLD către procesul părinte sunt efectuate doar dacă acesta este ultimul fir din grupul de fire.

Până la glibc 2.3, funcția de învăluire _exit() a invocat apelul de sistem al nucleului cu același nume. Începând cu glibc 2.3, funcția de învăluire invocă exit_group(2), pentru a termina toate firele de execuție dintr-un proces.

CONSULTAȚI ȘI
execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(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.