_onexit、_onexit_m_onexit, _onexit_m

終了時に呼び出されるルーチンを登録します。Registers a routine to be called at exit time.

構文Syntax

_onexit_t _onexit(
   _onexit_t function
);
_onexit_t_m _onexit_m(
   _onexit_t_m function
);

パラメーターParameters

functionfunction
終了時に呼び出される関数へのポインター。Pointer to a function to be called at exit.

戻り値Return Value

_onexitは、成功した場合は関数へのポインターを返し、関数ポインターを格納する領域がない場合はNULLを返します。_onexit returns a pointer to the function if successful or NULL if there is no space to store the function pointer.

RemarksRemarks

_Onexit関数には、プログラムが正常に終了したときに呼び出される関数 (関数) のアドレスが渡されます。The _onexit function is passed the address of a function (function) to be called when the program terminates normally. _Onexitを連続して呼び出すと、LIFO (後入れ先出し) の順序で実行される関数のレジスタが作成されます。Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. _Onexitに渡される関数は、パラメーターを受け取ることができません。The functions passed to _onexit cannot take parameters.

DLL 内から _onexitが呼び出された場合、 _onexitに登録されているルーチンは、DLL_PROCESS_DETACH を使用してDllMainが呼び出された後に dll のアンロード時に実行されます。In the case when _onexit is called from within a DLL, routines registered with _onexit run on a DLL's unloading after DllMain is called with DLL_PROCESS_DETACH.

_onexitは Microsoft の拡張機能です。_onexit is a Microsoft extension. ANSI の移植性のためには、atexit を使用します。For ANSI portability, use atexit. 関数のバージョン (_s) は混合モードで使用されます。The _onexit_m version of the function is for mixed mode use.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_onexit_onexit <stdlib.h><stdlib.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.

Example

// 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;
}

OutputOutput

This is executed first.
This is executed next.

関連項目See also

プロセス制御と環境制御Process and Environment Control
atexitatexit
exit、_Exit、_exitexit, _Exit, _exit
__dllonexit__dllonexit