atexit

Przetwarza określoną funkcję podczas zamykania.

Składnia

int atexit(
   void (__cdecl *func )( void )
);

Parametry

func
Funkcja, która ma być wywoływana.

Wartość zwracana

atexit Zwraca wartość 0, jeśli operacja powiedzie się lub wartość niezerowa, jeśli wystąpi błąd.

Uwagi

Funkcja atexit pobiera adres funkcji func do wywołania, gdy program kończy się normalnie. Kolejne wywołania w celu atexit utworzenia rejestru funkcji, które są wykonywane w kolejności last-in, first-out (LIFO). Funkcje przekazane do atexit polecenia nie mogą przyjmować parametrów. atexit i _onexit użyj sterta do przechowywania rejestru funkcji. W związku z tym liczba funkcji, które można zarejestrować, jest ograniczona tylko przez pamięć stert.

Kod w atexit funkcji nie powinien zawierać żadnej zależności od żadnej biblioteki DLL, która może zostać już zwolniona po wywołaniu atexit funkcji.

Microsoft zachowanie biblioteki DLL: gdy biblioteka DLL zwalnia się, po DllMain odebraniu DLL_PROCESS_DETACHwywołania zwrotne biblioteki DLL atexit są uruchamiane w odwrotnej kolejności rejestracji, a ostatnie wywołanie zwrotne zostało zarejestrowane jako pierwsze.

Aby wygenerować aplikację zgodną ze standardem ANSI, użyj standardowej funkcji ANSI atexit (zamiast podobnej _onexit funkcji).

Wymagania

Procedura Wymagany nagłówek
atexit <stdlib.h>

Przykład

Ten program wypycha cztery funkcje do stosu funkcji do wykonania, gdy atexit jest wywoływany. Gdy program zakończy działanie, wykonuje te funkcje w kolejności last-in, first-out.

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

Zobacz też

Kontrola procesu i środowiska
abort
exit, , _Exit_exit
_onexit, _onexit_m