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


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

См. также

Ссылки

Управление процессами и средой

abort

exit, _exit

_onexit, _onexit_m