Поделиться через


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