Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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