Man page - atexit(3)

Packages contains this manual

Available languages:

en fr pl cs ja ru ro de

Manual

atexit

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
VERSIONS
STANDARDS
HISTORIQUE
NOTES
Notes pour Linux
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

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

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <stdlib.h>

int atexit(void (* fonction )(void));

DESCRIPTION

La fonction atexit () enregistre la fonction 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 () du programme. 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 exige de l’implĂ©mentation qu’elle permette d’enregistrer au moins ATEXIT_MAX (32) de ces fonctions. La limite effective prise en charge par une implĂ©mentation peut ĂȘtre obtenue avec sysconf (3).

Lorsqu’un processus enfant 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.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3871158-1.png

VERSIONS

POSIX.1 stipule que le rĂ©sultat de plus d’un appel Ă  exit (3) (par exemple, appeler 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).

STANDARDS

C11, POSIX.1-2008.

HISTORIQUE

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

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 restantes ne sont pas appelĂ©es, et les autres Ă©tapes de fin de processus effectuĂ©es par exit (3) ne sont pas rĂ©alisĂ©es.

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 stipule 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 pour 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.

EXEMPLES

#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, "impossible de définir 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 française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .