次の方法で共有


_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後入れ先出し (LIFO) 順序で実行される関数の登録を作成します。_onexit に渡される関数はパラメーターを使用できません。

ケースではDLL_PROCESS_DETACH と DllMain が呼び出された後 _onexit が DLL 内から呼び出されるときにDLL のアンロード _onexit の実行に登録されているルーチン。

_onexit はMicrosoft の拡張機能です。ANSI の移植性についてはatexit を使用します。関数の _onexit_m のバージョンが混在モードで使用されます。

必要条件

ルーチン

必須ヘッダー

_onexit

<stdlib.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

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

同等の .NET Framework 関数

System:: Diagnostics:: Process:: 終了します。

参照

関連項目

プロセス制御と環境制御

atexit

exit、_exit

__dllonexit