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