_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
사용할 수 없습니다.
DLL 내에서 호출되는 경우 DLL이 언로드될 때 _onexit
실행으로 _onexit
등록된 루틴이 호출된 후 DllMain
.DLL_PROCESS_DETACH
_onexit
는 Microsoft 확장입니다. 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.