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 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