atexit
Verarbeitet die angegebene Funktion beim Beenden.
Syntax
int atexit(
void (__cdecl *func )( void )
);
Parameter
func
Die aufzurufende Funktion.
Rückgabewert
Bei Erfolg gibt atexit
0 zurück oder bei einem Fehler einen Wert ungleich 0.
Hinweise
Die atexit
Funktion wird an die Adresse einer Funktion func
übergeben, die aufgerufen werden soll, wenn das Programm normal beendet wird. Aufeinanderfolgende Aufrufe von atexit
führen zur Erstellung eines Registers von Funktion, die in LIFO-Reihenfolge (last-in, first-out) ausgeführt werden. Die übergebenen atexit
Funktionen können keine Parameter annehmen. atexit
und _onexit
verwenden den Heap, um das Funktionsregister zu halten. Dementsprechend wird die Anzahl an Funktionen, die verzeichnet werden können, nur durch den Heapspeicher eingeschränkt.
Der Code in der atexit
Funktion sollte keine Abhängigkeit von einer DLL enthalten, die beim Aufrufen der atexit
Funktion bereits entladen worden sein könnte.
Verwenden Sie zum Generieren einer ANSI-konformen Anwendung die ANSI-Standardfunktion atexit
(anstelle der ähnlichen _onexit
Funktion).
Anforderungen
Routine | Erforderlicher Header |
---|---|
atexit |
<stdlib.h> |
Beispiel
Dieses Programm legt vier neue Funktionen, die ausgeführt werden sollen, wenn atexit
aufgerufen wird, auf einen Stapel aus Funktionen ab. Wenn das Programm beendet wird, werden die Programme nach dem Last In, First Out-Prinzip ausgeführt.
// 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.
Siehe auch
Prozess- und Umgebungskontrolle
abort
exit
, _Exit
_exit
_onexit
, _onexit_m