_onexit
, _onexit_m
Регистрирует подпрограмму, вызываемую во время выхода.
Синтаксис
_onexit_t _onexit(
_onexit_t function
);
_onexit_t_m _onexit_m(
_onexit_t_m function
);
Параметры
function
Указатель на функцию, которая должна вызываться при выходе.
Возвращаемое значение
_onexit
Возвращает указатель на функцию в случае успешного выполнения или NULL
если нет места для хранения указателя функции.
Замечания
Функции _onexit
передается адрес функции (function
), которую требуется вызывать при завершении программы в обычном режиме. Последовательные вызовы функции _onexit
создают регистр функций, которые выполняются в порядке LIFO (последним поступил — первым обслужен). Переданные функции _onexit
не могут принимать параметры.
В случае, когда _onexit
вызывается из библиотеки DLL, подпрограммы, зарегистрированные при _onexit
выгрузке библиотеки DLL после DllMain
вызова DLL_PROCESS_DETACH
.
_onexit
является расширением Майкрософт. Для переносимости ANSI используйте atexit
. Версия _onexit_m
этой функции предназначена для использования смешанного режима.
Требования
Маршрут | Обязательный заголовок |
---|---|
_onexit |
<stdlib.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_onexit.c
#include <stdlib.h>
#include <stdio.h>
/* Prototypes */
int fn1(void), fn2(void), fn3(void), fn4 (void);
int main( void )
{
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1()
{
printf( "next.\n" );
return 0;
}
int fn2()
{
printf( "executed " );
return 0;
}
int fn3()
{
printf( "is " );
return 0;
}
int fn4()
{
printf( "This " );
return 0;
}
Выходные данные
This is executed first.
This is executed next.
См. также
Управление процессами и средой
atexit
exit
, , _Exit
_exit
__dllonexit