exit, _Exit, _exit

終止呼叫處理序。 exit 函式會在清除之後終止該處理序; _exit_Exit 會立即予以終止。

注意

請勿使用此方法來關閉通用 Windows 平臺 (UWP) 應用程式,但測試或偵錯案例除外。 根據 Microsoft Store 原則,不允許以程式設計或 UI 方式關閉市集應用程式。 如需詳細資訊,請參閱 UWP 應用程式生命週期 。 如需 UWP 應用程式的詳細資訊,請參閱 通用 Windows 平臺檔

語法

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

參數

status
結束狀態碼。

備註

exit_Exit_exit 函式會終止呼叫處理序。 exit 函式會呼叫執行緒區域物件的解構函式,接著再以後進先出 (LIFO) 順序呼叫 atexit_onexit註冊的函式,最後在終止處理序之前,先排清所有檔案緩衝區。 _Exit_exit 函式在終止處理程序時,不會終結執行緒區域物件或終止處理 atexit_onexit 函式,也不會排清資料流緩衝區。

exit雖然 和 _Exit_exit 呼叫不會傳回值,但是 中的值 status 會提供給主機環境或等候呼叫進程,如果進程結束時存在,則為 。 通常呼叫端會將 status 值設為 0 表示正常結束,或設為其他值表示錯誤。 status 值可供作業系統批次命令 ERRORLEVEL 使用,而且會由下列兩個常數之一代表: EXIT_SUCCESS代表值 0; EXIT_FAILURE代表值 1。

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

請勿使用 DLL_PROCESS_ATTACHDllMain 呼叫 exit 。 若要結束函式 DLLMain ,請從 DLL_PROCESS_ATTACH 傳回 FALSE

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

函式 必要的標頭
exit, _Exit, _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 );
}

另請參閱

進程和環境控制
abort
atexit
_cexit, _c_exit
_exec_wexec 函式
_onexit, _onexit_m
quick_exit
_spawn_wspawn 函式
system, _wsystem