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

NUME

       atexit - înregistrează o funcție care să fie apelată la terminarea normală a procesului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <stdlib.h>

       int atexit(void (*function)(void));

DESCRIERE

       Funcția  atexit()  înregistrează  funcția dată pentru a fi apelată la terminarea normală a
       procesului, fie prin exit(3), fie prin întoarcerea de la main() a programului.   Funcțiile
       astfel  înregistrate  sunt  apelate în ordinea inversă a înregistrării lor; nu se transmit
       argumente.

       Aceeași funcție poate fi înregistrată de mai multe ori: aceasta  este  apelată  o  singură
       dată pentru fiecare înregistrare.

       POSIX.1  impune  ca  o  implementare  să permită înregistrarea a cel puțin ATEXIT_MAX (32)
       astfel de funcții.  Limita reală acceptată de o implementare poate fi obținută cu ajutorul
       sysconf(3).

       Atunci când un proces-copil este creat prin fork(2), acesta moștenește procesele-copil ale
       înregistrărilor părintelui său.  La un apel reușit la una dintre funcțiile exec(3),  toate
       înregistrările sunt eliminate.

VALOAREA RETURNATĂ

       Funcția  atexit()  returnează  valoarea  0  în caz de succes; în caz contrar, returnează o
       valoare diferită de zero.

ATRIBUTE

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

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │atexit()                                                   │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

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

NOTE

       Funcțiile înregistrate folosind atexit() (și on_exit(3)) nu sunt apelate dacă un proces se
       termină în mod anormal din cauza transmiterii unui semnal.

       În  cazul  în  care  una  dintre  funcțiile  înregistrate  apelează _exit(2), atunci toate
       funcțiile rămase nu sunt invocate, iar celelalte etape de încheiere a procesului efectuate
       de exit(3) nu sunt efectuate.

       POSIX.1 precizează că rezultatul apelării exit(3) de mai multe ori (adică apelarea exit(3)
       în cadrul unei funcții înregistrate cu atexit()) este nedefinit.  Pe unele sisteme (dar nu
       și  pe Linux), acest lucru poate duce la o recursivitate infinită; programele portabile nu
       ar trebui să invoce exit(3) în interiorul unei funcții înregistrate cu atexit().

       Funcțiile atexit() și on_exit(3) înregistrează funcții în  aceeași  listă:  la  terminarea
       normală   a  procesului,  funcțiile  înregistrate  sunt  invocate  în  ordinea  inversă  a
       înregistrării lor de către aceste două funcții.

       În conformitate cu POSIX.1, rezultatul  este  nedefinit  dacă  longjmp(3)  este  utilizată
       pentru a încheia execuția uneia dintre funcțiile înregistrate cu atexit().

   Note Linux
       Începând  cu  glibc  2.2.3,  atexit()  (și  on_exit(3))  poate fi utilizată în cadrul unei
       biblioteci partajate pentru a stabili funcții care sunt  apelate  atunci  când  biblioteca
       partajată este descărcată).

EXEMPLE

       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       void
       bye(void)
       {
           printf("Asta a fost tot, prieteni\n");
       }

       int
       main(void)
       {
           long a;
           int i;

           a = sysconf(_SC_ATEXIT_MAX);
           printf("ATEXIT_MAX = %ld\n", a);

           i = atexit(bye);
           if (i != 0) {
               fprintf(stderr, "nu poate defini funcția de ieșire\n");
               exit(EXIT_FAILURE);
           }

           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       _exit(2), dlopen(3), exit(3), on_exit(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⟩.