Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 ruft die Adresse einer Funktion func ab, die aufgerufen werden soll, wenn das Programm normal beendet wird. Aufeinander folgende Aufrufe zum atexit Erstellen eines Registers von Funktionen, die in der letzten, first-out-Reihenfolge (First-Out, LIFO) ausgeführt werden. Die übergebenen atexit Funktionen können keine Parameter annehmen.
atexit und _onexit verwenden den Heap, um das Funktionsregister zu halten. Die Anzahl der Funktionen, die Sie registrieren können, ist daher nur durch heap-Speicher begrenzt.
Der Code in der atexit Funktion sollte keine Abhängigkeit von einer DLL enthalten, die beim Aufrufen der atexit Funktion bereits entladen werden konnte.
Microsoft-spezifisches DLL-Verhalten: Wenn eine DLL nach dem Empfang entladen DllMain wirdDLL_PROCESS_DETACH, werden die Rückrufe der DLL atexit in umgekehrter Registrierungsreihenfolge ausgeführt, wobei der letzte Rückruf zuerst registriert wurde.
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 verschiebt vier Funktionen auf den Stapel der Funktionen, die beim Aufruf ausgeführt atexit werden sollen. Wenn das Programm beendet wird, werden diese Funktionen in letzter Reihenfolge 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