Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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