atexit(3) Library Functions Manual atexit(3) NOM atexit - Enregistrer une fonction a appeler a la fin d'un programme BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int atexit(void (*fonction)(void)); DESCRIPTION La fonction atexit() enregistre la fonction 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() du programme. 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 exige de l'implementation qu'elle permette d'enregistrer au moins ATEXIT_MAX (32) de ces fonctions. La limite effective prise en charge par une implementation peut etre obtenue avec sysconf(3). Lorsqu'un processus enfant 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 RENVOYEE La fonction atexit() renvoie 0 en cas de succes et une valeur non nulle en cas d'echec. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |atexit() | Securite des threads | MT-Safe | +---------------------------------+--------------------------+---------+ VERSIONS POSIX.1 stipule que le resultat de plus d'un appel a exit(3) (par exemple, appeler 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). STANDARDS C11, POSIX.1-2008. HISTORIQUE POSIX.1-2001, C89, C99, SVr4, 4.3BSD. 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 restantes ne sont pas appelees, et les autres etapes de fin de processus effectuees par exit(3) ne sont pas realisees. 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 stipule que le resultat est indefini si longjmp(3) est utilisee pour terminer l'execution d'une fonction enregistree avec atexit(). Notes pour 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. EXEMPLES #include #include #include 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, "impossible de definir la fonction de sortie\n"); exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); } VOIR AUSSI _exit(2), dlopen(3), exit(3), on_exit(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Gregoire Scano Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 atexit(3)