xenial (3) atexit.3.gz

Provided by: manpages-fr-dev_3.65d1p1-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.65 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> ».