exit、_exit
呼び出し元プロセスを終了します。exit は、クリーンアップの後に終了します。_exit は、すぐに終了します。
注意
テスト シナリオまたはデバッグ シナリオの場合を除き、この方法を使用して Windows ストア アプリをシャットダウンしないでください。プログラムや UI によって Windows ストア アプリを終了する方法は、「Windows 8 アプリの認定の要件」のセクション 3.6 により許可されていません。詳細については、「アプリケーションのライフサイクル (Windows ストア アプリ)」を参照してください。
void exit(
int status
);
void _exit(
int status
);
パラメーター
- status
終了ステータス。
解説
exit 関数と _exit 関数は、呼び出し元プロセスを終了します。 exit は、atexit と _onexit によって登録された関数を、後入れ先出し (LIFO) の順序で呼び出し、プロセスが終了する前にすべてのファイル バッファーをフラッシュします。 _exit は、atexit や _onexit を処理したりストリーム バッファーをフラッシュしたりせずにプロセスを終了します。 通常、status 値は、通常終了を示すために 0 に設定されるか、またはエラーを示すために他の値に設定されます。
exit と _exit の呼び出しは値を返しませんが、status の下位バイトは、呼び出しプロセスの終了後、待機している呼び出しプロセスが存在する場合は、そのプロセスで使用できるようになります。 status 値は、オペレーティング システムのバッチ コマンド ERRORLEVEL で使用でき、0 の値を表す EXIT_SUCCESS、または 1 の値を表す EXIT_FAILURE の 2 種類の定数のうちのいずれかで表されます。 exit、_exit、_cexit、および _c_exit は次のように動作します。
関数 |
説明 |
---|---|
exit |
完全な C ライブラリの終了処理を実行してプロセスを終了し、指定されたステータス コードで終了します。 |
_exit |
高速 C ライブラリの終了処理を実行してプロセスを終了し、指定されたステータス コードで終了します。 |
_cexit |
完全な C ライブラリの終了処理を実行し、呼び出し元に戻りますが、プロセスを終了しません。 |
_c_exit |
高速 C ライブラリの終了処理を実行し、呼び出し元に戻りますが、プロセスを終了しません。 |
exit 関数、または _exit 関数を呼び出す場合、呼び出し時に存在する一時オブジェクトまたは自動オブジェクトのデストラクターは呼び出されません。 自動オブジェクトは、オブジェクトが静的として宣言されていない関数内で定義されます。 一時オブジェクトはコンパイラによって作成されたオブジェクトです。 exit か _exit を呼び出す前に自動オブジェクトを破棄するには、次のように、明示的にオブジェクトのデストラクターを呼び出します。
myObject.myClass::~myClass();
DllMain から exit を呼び出すために DLL_PROCESS_ATTACH を使用しないでください。 DLLMain の関数を終了するには、DLL_PROCESS_ATTACH から FALSE を返します。
必要条件
関数 |
必須ヘッダー |
---|---|
exit |
<process.h> または <stdlib.h> |
_exit |
<process.h> または <stdlib.h> |
互換性の詳細については、「互換性」を参照してください。
使用例
// 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