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

NUME

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

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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 │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

VERSIUNI

       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().

STANDARDE

       C11, POSIX.1-2008.

ISTORIC

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

       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 se 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   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  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.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                        atexit(3)