Freigeben über


_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 atexitfü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