Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
atexit - Enregistrer une fonction a appeler a la fin d'un programme
SYNOPSIS
#include <stdlib.h>
int atexit(void (*function)(void));
DESCRIPTION
La fonction atexit() enregistre la fonction function donnee pour que
celle-ci soit automatiquement appelee lorsque le programme se termine
normalement avec exit(3) ou lors de la fin de la fonction main. Les
fonctions ainsi enregistrees sont invoquees dans l'ordre inverse de
leur enregistrement ; aucun argument n'est transmis.
La meme fonction peut etre enregistree plusieurs fois : elle sera
appelee une fois pour chaque enregistrement.
POSIX.1-2001 exige que l'implementation permette d'enregistrer au moins
ATEXIT_MAX (32) de ces fonctions. La limite actuelle de
l'implementation peut etre obtenue avec sysconf(3).
Lorsqu'un processus fils est cree avec fork(2), il herite d'une copie
des enregistrements de son parent. A la suite d'un appel reussi a l'une
des fonctions exec(3), tous les enregistrements sont supprimes.
VALEUR RENVOY'EE
La fonction atexit() renvoie 0 en cas de succes et une valeur non nulle
en cas d'echec.
CONFORMIT'E
SVr4, BSD 4.3, C89, C99, POSIX.1-2001.
NOTES
Les fonctions enregistrees avec atexit() (et on_exit(3)) ne sont pas
appelees si le programme se termine anormalement a cause de l'envoi
d'un signal.
Si l'une des fonctions enregistrees appelle _exit(2), alors toutes les
autres fonctions enregistrees ne seront pas appelees, et les etapes de
fin de processus effectuees par exit(3) ne seront pas realisees.
POSIX.1-2001 dit que le resultat de plusieurs appels a exit(3) (par
exemple, appele exit(3) dans une fonction enregistree avec atexit(3))
est indefini. Sur quelques systemes (mais pas sous Linux), cela peut
produire une boucle infinie ; les programmes portables ne doivent pas
appeler exit(3) dans une fonction enregistree avec atexit(3).
Les fonctions atexit() et on_exit(3) enregistrent les fonctions dans la
meme liste : les fonctions ainsi enregistrees sont invoquees dans
l'ordre inverse de leur enregistrement par ces deux fonctions.
POSIX.1-2001 dit que le resultat est indefini si longjmp(3) est
utilisee pour terminer l'execution d'une fonction enregistree avec
atexit().
Notes sur Linux
Depuis la version 2.2.3 de la glibc, atexit() (et on_exit(3)) peut etre
utilisee dans une bibliotheque partagee pour definir les fonctions qui
sont appelees lorsque la bibliotheque partagee est dechargee.
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.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin
Duneau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
Linux 5 decembre 2008 ATEXIT(3)