exit, _Exit, _exit

呼び出しプロセスを終了します。 exit 関数はクリーンアップ後に呼び出しプロセスを終了させます。一方、 _exit_Exit は直ちに終了させます。

Note

テスト シナリオまたはデバッグ シナリオの場合を除き、この方法を使用してユニバーサル Windows プラットフォーム (UWP) アプリをシャットダウンしないでください。 プログラムまたは UI を使用して Store アプリを閉じる方法は、Microsoft Store ポリシーでは許可されていません。 詳細については、UWP アプリのライフサイクルに関するページを参照してください。 UWP アプリについては、ユニバーサル Windows プラットフォームのドキュメントを参照してください。

構文

void exit(
   int const status
);
void _Exit(
   int const status
);
void _exit(
   int const status
);

パラメーター

status
終了ステータス コード。

解説

exit関数、 _Exit 関数、 _exit 関数は呼び出しプロセスを終了します。 exit 関数はスレッド ローカル オブジェクトのデストラクターを呼び出してから、 atexit_onexitによって登録された関数を、後入れ先出し (LIFO) の順序で呼び出し、プロセスが終了する前にすべてのファイル バッファーをフラッシュします。 _Exit 関数と _exit 関数は、スレッド ローカル オブジェクトの破棄も、 atexit_onexit 関数の処理もせず、ストリーム バッファーのフラッシュもしないでプロセスを終了します。

exit呼び出しと呼_Exitび出し_exitでは値は返されませんが、statusプロセスの終了後、ホスト環境または待機中の呼び出しプロセス (存在する場合) で使用できるようになります。 通常、呼び出し元は、終了を示すために status 値を 0 に設定し、エラーを示す場合は他の値に設定します。 status 値は、オペレーティング システムのバッチ コマンド ERRORLEVEL で使用でき、0 の値を表す EXIT_SUCCESS、または 1 の値を表す EXIT_FAILUREの 2 種類の定数のうちのいずれかで表されます。

exit_Exit_exitquick_exit_cexit_c_exit 関数は次のように動作します。

機能 説明
exit 完全な C ライブラリの終了処理を実行してプロセスを終了し、指定されたステータス コードをホスト環境に提供します。
_Exit 最低限の C ライブラリの終了処理を実行してプロセスを終了し、指定されたステータス コードをホスト環境に提供します。
_exit 最低限の C ライブラリの終了処理を実行してプロセスを終了し、指定されたステータス コードをホスト環境に提供します。
quick_exit 高速な C ライブラリの終了処理を実行してプロセスを終了し、指定されたステータス コードをホスト環境に提供します。
_cexit 完全な C ライブラリの終了処理を実行し、呼び出し元に戻ります。 プロセスを終了しません。
_c_exit 最低限の C ライブラリの終了処理を実行し、呼び出し元に戻ります。 プロセスを終了しません。

関数をexit_Exit_exit呼び出すと、呼び出し時に存在する一時オブジェクトまたは自動オブジェクトのデストラクターは呼び出されません。 自動オブジェクトは、関数で定義される静的ではないローカル オブジェクトです。 一時オブジェクトは、関数呼び出しによって返される値など、コンパイラによって作成されるオブジェクトです。 exit_Exit、または _exit を呼び出す前に自動オブジェクトを破棄するには、次のように、明示的にオブジェクトのデストラクターを呼び出します。

void last_fn() {}
    struct SomeClass {} myInstance{};
    // ...
    myInstance.~SomeClass(); // explicit destructor call
    exit(0);
}

からDllMain呼び出exitすために使用DLL_PROCESS_ATTACHしないでください. DLLMain 関数を終了するには、FALSE から DLL_PROCESS_ATTACH を返します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

必要条件

機能 必須ヘッダー
exit, _Exit, _exit <process.h> または <stdlib.h>

互換性の詳細については、「 Compatibility」を参照してください。

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

関連項目

プロセスと環境の制御
abort
atexit
_cexit, _c_exit
_exec_wexec 関数
_onexit, _onexit_m
quick_exit
_spawn_wspawn 関数
system, _wsystem