Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 obtient l’adresse d’une fonction func à appeler lorsque le programme se termine normalement. Appels successifs pour atexit créer un registre de fonctions qui s’exécutent dans l’ordre de dernière sortie (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. Par conséquent, le nombre de fonctions que vous pouvez inscrire est limité uniquement par mémoire de tas.
Le code de la atexit fonction ne doit pas contenir de dépendance sur une DLL qui pourrait déjà être déchargée lorsque la atexit fonction est appelée.
comportement de DLL spécifique à Microsoft : lorsqu'une DLL est déchargée, après DllMain réceptionDLL_PROCESS_DETACH, les rappels de atexit la DLL s'exécutent dans l'ordre d'inscription inverse, avec le dernier rappel inscrit en premier.
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 envoie quatre fonctions à la pile des fonctions à exécuter lorsqu’elle atexit est appelée. Lorsque le programme s’arrête, il exécute ces fonctions dans l’ordre de last-in, first-out.
// 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