atexit
Обрабатывает указанную функцию на выходе.
Синтаксис
int atexit(
void (__cdecl *func )( void )
);
Параметры
func
Функция, которую требуется вызвать.
Возвращаемое значение
atexit
возвращает 0 в случае успеха или ненулевое значение в случае ошибки.
Замечания
Функция atexit
передает адрес вызываемой функции func
при обычном завершении программы. Последовательные вызовы функции atexit
создают регистр функций, которые выполняются в порядке LIFO (последним поступил — первым обслужен). Переданные функции atexit
не могут принимать параметры. Для хранения регистра функций atexit
и _onexit
используют кучу. В связи с этим количество функций, которое можно зарегистрировать, ограничивается только памятью кучи.
Код в atexit
функции не должен содержать никакой зависимости от любой библиотеки DLL, которая уже могла быть выгружена при вызове atexit
функции.
Чтобы создать приложение, соответствующее ANSI, используйте стандартную atexit
функцию ANSI (а не аналогичную _onexit
функцию).
Требования
Маршрут | Обязательный заголовок |
---|---|
atexit |
<stdlib.h> |
Пример
Это программа отправляет четыре функции в стек функций, которые должны выполняться при вызове atexit
. При завершении работы программы эти программы выполняются в обратном порядке.
// 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.
См. также
Управление процессами и средой
abort
exit
, , _Exit
_exit
_onexit
, _onexit_m