다음을 통해 공유


_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.

참고 항목

프로세스 및 환경 제어
atexit
exit, , _Exit_exit
__dllonexit