exit
、 、 _Exit
_exit
終止呼叫處理序。 exit
函式會在清除之後終止該處理序; _exit
及 _Exit
會立即予以終止。
注意
請勿使用此方法來關閉 通用 Windows 平台 (UWP) 應用程式,但測試或偵錯案例除外。 根據 Microsoft 市集原則,不允許以程式設計或 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
、 _exit
、 quick_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_ATTACH
從DllMain
呼叫 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