exit、_exit
exit はクリーンアップ後に、_exit はすぐに呼び出しプロセスを終了します。
void exit(
int status
);
void _exit(
int status
);
パラメーター
- status
終了状態
解説
exit 関数と _exit 関数は、呼び出しプロセスを終了します。 exit は、atexit で登録された関数を後入れ先出し (LIFO) の順に呼び出し、_onexit は、プロセスを終了する前に、ファイル バッファーをすべてフラッシュします。 _exit は、atexit または _onexit のプロセスやストリーム バッファーのフラッシュを行わずに、プロセスを終了します。 status の値は、正常終了時は通常 0 に設定され、エラー時は他の値に設定されます。
exit と _exit の呼び出しは値を返しませんが、待機中の呼び出しプロセスがある場合は、現在の呼び出しプロセスが終了した後で、待機中の呼び出しプロセスが status の下位バイトを利用できます。 status値は、オペレーティング システムのバッチ コマンドをERRORLEVEL、2 つの定数のいずれかで表されます。EXIT_SUCCESS、、0 の値を表すまたはEXIT_FAILURE、は、値 1 を表します。 exit、_exit、_cexit、および _c_exit の動作は次のとおりです。
機能 |
説明 |
---|---|
exit |
C ライブラリの終了プロシージャ全体を実行してプロセスを終了し、指定された状態コードで終了します。 |
_exit |
C ライブラリの高速終了プロシージャを実行してプロセスを終了し、指定された状態コードで終了します。 |
_cexit |
C ライブラリの終了プロシージャ全体を実行し、呼び出し元に戻りますが、プロセスは終了しません。 |
_c_exit |
C ライブラリの高速終了プロシージャを実行し、呼び出し元に戻りますが、プロセスは終了しません。 |
exit 関数または _exit 関数を呼び出すとき、呼び出し時に存在した一時オブジェクトまたは自動オブジェクトのデストラクターは呼び出されません。 自動オブジェクトとは、定義されている関数内で静的オブジェクトとして宣言されていないオブジェクトのことです。 一時オブジェクトは、コンパイラによって作成されたオブジェクトです。 exit 関数または _exit 関数を呼び出す前に自動オブジェクトを破棄するには、次のようにオブジェクトのデストラクターを明示的に呼び出します。
myObject.myClass::~myClass();
DLL_PROCESS_ATTACH を使用して DllMain から exit を呼び出さないでください。 DLLMain 関数を終了する場合は、DLL_PROCESS_ATTACH から FALSE を返します。
必要条件
機能 |
必須ヘッダー |
---|---|
exit |
<process.h> または <stdlib.h> |
_exit |
<process.h> または <stdlib.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_exit.c
// This program returns an exit code of 1. The
// error code could be tested in a batch file.
#include <stdlib.h>
int main( void )
{
exit( 1 );
}
同等の .NET Framework 関数
System::Diagnostics::Process::Kill