atexit
Zpracuje zadanou funkci při ukončení.
Syntaxe
int atexit(
void (__cdecl *func )( void )
);
Parametry
func
Funkce, která se má volat.
Vrácená hodnota
atexit
vrátí hodnotu 0, pokud je úspěšná nebo nenulová hodnota, pokud dojde k chybě.
Poznámky
Funkce atexit
se předá adresu funkce func
, která se má volat při normálním ukončení programu. Následná volání pro atexit
vytvoření registru funkcí, které jsou spouštěny v pořadí liFO (last-in). Předané funkce nemůžou atexit
přijímat parametry. atexit
haldu _onexit
použijte k uložení registru funkcí. Počet funkcí, které lze zaregistrovat, je tedy omezen pouze pamětí haldy.
Kód ve atexit
funkci by neměl obsahovat žádnou závislost na žádné knihovně DLL, která by již mohla být uvolněna při atexit
volání funkce.
Chcete-li vygenerovat aplikaci vyhovující standardu ANSI, použijte funkci standardu atexit
ANSI (místo podobné _onexit
funkce).
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
atexit |
<stdlib.h> |
Příklad
Tento program nasdílí čtyři funkce do zásobníku funkcí, které se mají spustit při atexit
zavolání. Když se program ukončí, tyto programy se nejprve spustí na poslední straně.
// 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.
Viz také
Řízení procesů a prostředí
abort
exit
, , _Exit
_exit
_onexit
, _onexit_m