Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       atexit - Enregistrer une fonction à appeler à la fin d'un programme

SYNOPSIS

       #include <stdlib.h>

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

DESCRIPTION

       La  fonction  atexit()  enregistre  la  fonction  function  donnée  pour que celle-ci soit
       automatiquement appelée lorsque le programme se termine normalement avec exit(3)  ou  lors
       de  la  fin  de  la  fonction  main.  Les fonctions ainsi enregistrées sont invoquées dans
       l'ordre inverse de leur enregistrement ; aucun argument n'est transmis.

       La même fonction peut être enregistrée plusieurs fois : elle sera appelée  une  fois  pour
       chaque enregistrement.

       POSIX.1-2001 exige que l'implémentation permette d'enregistrer au moins ATEXIT_MAX (32) de
       ces fonctions. La limite actuelle de l'implémentation peut être obtenue avec sysconf(3).

       Lorsqu'un processus fils est créé avec fork(2), il hérite d'une copie des  enregistrements
       de  son  parent.  À  la  suite  d'un  appel réussi à l'une des fonctions exec(3), tous les
       enregistrements sont supprimés.

VALEUR RENVOYÉE

       La fonction atexit() renvoie 0 en cas de succès et une valeur non nulle en cas d'échec.

CONFORMITÉ

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

NOTES

       Les fonctions enregistrées avec atexit() (et  on_exit(3))  ne  sont  pas  appelées  si  le
       programme se termine anormalement à cause de l'envoi d'un signal.

       Si  l'une  des  fonctions enregistrées appelle _exit(2), alors toutes les autres fonctions
       enregistrées ne seront pas appelées, et les étapes de  fin  de  processus  effectuées  par
       exit(3) ne seront pas réalisées.

       POSIX.1-2001 dit que le résultat de plus d'un appel à exit(3) (par exemple, appelé exit(3)
       dans une fonction enregistrée avec atexit(3)) est indéfini. Sur  quelques  systèmes  (mais
       pas  sous  Linux),  cela  peut  produire  une boucle infinie ; les programmes portables ne
       doivent pas appeler exit(3) dans une fonction enregistrée avec atexit(3).

       Les fonctions atexit() et on_exit(3) enregistrent les fonctions dans la même  liste :  les
       fonctions  ainsi  enregistrées  sont invoquées dans l'ordre inverse de leur enregistrement
       par ces deux fonctions.

       POSIX.1-2001 dit que le résultat est indéfini si longjmp(3)  est  utilisée  pour  terminer
       l'exécution d'une fonction enregistrée avec atexit().

   Notes sur Linux
       Depuis  la version 2.2.3 de la glibc, atexit() (et on_exit(3)) peut être utilisée dans une
       bibliothèque partagée pour définir les fonctions qui sont appelées lorsque la bibliothèque
       partagée est déchargée.

EXEMPLE

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

       void
       bye(void)
       {
           printf("That was all, folks\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, "cannot set exit function\n");
               exit(EXIT_FAILURE);
           }

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       _exit(2), exit(3), on_exit(3)

COLOPHON

       Cette  page  fait partie de la publication 3.57 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/> (2003-2006). Florentin  Duneau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».