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 získá 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é se spouštějí 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é můžete 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.

Microsoft chování knihovny DLL: Při uvolnění knihovny DLL po DllMain přijetí DLL_PROCESS_DETACHse zpětná volání knihovny DLL atexit spustí v pořadí zpětné registrace, přičemž poslední zaregistrované zpětné volání je spuštěno jako první.

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ž program ukončí, spustí tyto funkce v posledním pořadí.

// 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