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