atexit
Traite la fonction spécifiée en sortie.
Syntaxe
int atexit(
void (__cdecl *func )( void )
);
Paramètres
func
Fonction à appeler.
Valeur retournée
atexit
retourne 0 en cas de réussite, ou une valeur différente de zéro si une erreur se produit.
Notes
La atexit
fonction est passée l’adresse d’une fonction func
à appeler lorsque le programme se termine normalement. Les appels successifs à atexit
créent un registre des fonctions qui sont exécutées dans l’ordre « dernier entré, premier sorti » (LIFO). Les fonctions passées à atexit
ne peuvent pas prendre de paramètres. atexit
et _onexit
utilisent le tas pour conserver le registre des fonctions. Le nombre de fonctions pouvant être enregistrées n’est donc limité que par la mémoire de tas.
Le code de la atexit
fonction ne doit pas contenir de dépendance sur une DLL qui aurait pu déjà être déchargée lorsque la atexit
fonction est appelée.
Pour générer une application conforme à ANSI, utilisez la fonction ANSI standard atexit
(plutôt que la fonction similaire _onexit
).
Spécifications
Routine | En-tête requis |
---|---|
atexit |
<stdlib.h> |
Exemple
Ce programme place quatre fonctions sur la pile de fonctions à exécuter quand atexit
est appelé. Quand le programme s’arrête, ces programmes sont exécutés dans l’ordre « dernier entré, premier sorti ».
// crt_atexit.c
#include <stdlib.h>
#include <stdio.h>
void fn1( void ), fn2( void ), fn3( void ), fn4( void );
int main( void )
{
atexit( fn1 );
atexit( fn2 );
atexit( fn3 );
atexit( fn4 );
printf( "This is executed first.\n" );
}
void fn1()
{
printf( "next.\n" );
}
void fn2()
{
printf( "executed " );
}
void fn3()
{
printf( "is " );
}
void fn4()
{
printf( "This " );
}
This is executed first.
This is executed next.
Voir aussi
Processus et contrôle d’environnement
abort
exit
, , _Exit
_exit
_onexit
, _onexit_m