Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обрабатывает указанную функцию на выходе.
Синтаксис
int atexit(
void (__cdecl *func )( void )
);
Параметры
func
Функция, которую требуется вызвать.
Возвращаемое значение
atexit возвращает 0 в случае успеха или ненулевое значение в случае ошибки.
Замечания
Функция atexit получает адрес функции func , вызываемой при обычном завершении программы. Последовательные вызовы для atexit создания регистра функций, выполняющихся в порядке последней операции (LIFO). Переданные функции atexit не могут принимать параметры. Для хранения регистра функций atexit и _onexit используют кучу. Таким образом, количество функций, которые можно зарегистрировать, ограничено только памятью кучи.
Код в atexit функции не должен содержать никакой зависимости от любой библиотеки DLL, которая уже может быть выгружена при вызове atexit функции.
Microsoft поведение библиотеки DLL: когда библиотека DLL выгружается DLL_PROCESS_DETACHпосле DllMain получения, обратные вызовы библиотеки 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