atexit
Обрабатывает указанную функцию на выходе.
int atexit(
void (__cdecl *func )( void )
);
Параметры
- func
Функция, которую необходимо вызвать.
Возвращаемое значение
atexit возвращает 0 в случае успеха или ненулевое значение, если возникает ошибка.
Заметки
Функции atexit передается адрес функции (func), которую нужно вызывать при завершении программы в обычном режиме. Последовательные вызовы atexit создают регистр функций, которые выполняются в порядке последним поступил — первым обслужен (LIFO). Функции, переданные в atexit, не могут принимать параметры. atexit и _onexit используют кучу для хранения регистра функций. Поэтому количество функций, которые можно зарегистрировать, ограничивается только памятью кучи.
Код в функции atexit не должен содержать какую-либо зависимость от какой-либо библиотеки DLL, которая может быть уже выгружена на момент вызова функции atexit.
Для создания ANSI- совместимого приложения используйте ANSI-стандартную функцию atexit (а не аналогичную ей функцию _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 " );
}
Эквивалент в .NET Framework
System::Diagnostics::Process::Exited