_onexit
, _onexit_m
Registriert eine Routine, die zum Zeitpunkt der Beendigung aufgerufen werden soll.
Syntax
_onexit_t _onexit(
_onexit_t function
);
_onexit_t_m _onexit_m(
_onexit_t_m function
);
Parameter
function
Zeiger an eine bei Beendigung aufzurufende Funktion.
Rückgabewert
_onexit
gibt einen Zeiger auf die Funktion zurück, wenn die Funktion erfolgreich war oder NULL
wenn kein Platz zum Speichern des Funktionszeigers vorhanden ist.
Hinweise
Wenn das Programm normal beendet wird, wird die Adresse einer aufzurufenden Funktion (function
) der _onexit
-Funktion übergeben. Aufeinanderfolgende Aufrufe von _onexit
führen zur Erstellung eines Registers von Funktion, die in LIFO-Reihenfolge (last-in, first-out) ausgeführt werden. Die übergebenen _onexit
Funktionen können keine Parameter annehmen.
In dem Fall, wenn _onexit
aus einer DLL aufgerufen wird, Routinen, die beim _onexit
Entladen der DLL registriert sind, nach DllMain
dem Aufruf mit DLL_PROCESS_DETACH
.
_onexit
ist eine Microsoft-Erweiterung. Verwenden Sie atexit
für DIE ANSI-Portabilität . Die _onexit_m
-Version der Funktion besteht zur Verwendung des gemischten Modus.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_onexit |
<stdlib.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_onexit.c
#include <stdlib.h>
#include <stdio.h>
/* Prototypes */
int fn1(void), fn2(void), fn3(void), fn4 (void);
int main( void )
{
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1()
{
printf( "next.\n" );
return 0;
}
int fn2()
{
printf( "executed " );
return 0;
}
int fn3()
{
printf( "is " );
return 0;
}
int fn4()
{
printf( "This " );
return 0;
}
Output
This is executed first.
This is executed next.
Siehe auch
Prozess- und Umgebungskontrolle
atexit
exit
, _Exit
_exit
__dllonexit