函式
<cstdlib>

exit

void exit (int status);
[[noreturn]] void exit (int status);
終止呼叫程序
正常終止程序,為終止程式執行常規清理。

正常的程式終止會執行以下操作(按相同順序):
  • 銷燬與當前執行緒關聯的、具有執行緒儲存期的物件(僅限 C++11)。
  • 銷燬具有靜態儲存期的物件(C++),並呼叫透過 atexit 註冊的函式。
  • 所有 C 流(使用 <cstdio> 中的函式開啟)都會被關閉(如果帶緩衝,則會被重新整理),所有用 tmpfile 建立的檔案都會被移除。
  • 控制權返回給宿主環境。

請注意,呼叫 exit 不會銷燬具有自動儲存期的物件(C++)。

如果 status 為零或 EXIT_SUCCESS,則向宿主環境返回一個“成功終止”狀態。
如果 statusEXIT_FAILURE,則向宿主環境返回一個“不成功終止”狀態。
否則,返回的狀態取決於系統和庫的實現。

要了解不執行上述清理的類似函式,請參閱 quick_exit

引數

狀態
狀態碼。
如果此值為 0EXIT_SUCCESS,表示成功。
如果此值為 EXIT_FAILURE,表示失敗。

返回值

無(該函式永不返回)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* exit example */
#include <stdio.h>      /* printf, fopen */
#include <stdlib.h>     /* exit, EXIT_FAILURE */

int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","r");
  if (pFile==NULL)
  {
    printf ("Error opening file");
    exit (EXIT_FAILURE);
  }
  else
  {
    /* file operations here */
  }
  return 0;
}

資料競爭

呼叫此函式會銷燬所有具有靜態儲存期的物件:一個執行多執行緒的程式不應呼叫 exit(請參閱 quick_exit 以瞭解不影響靜態物件的類似函式)。

異常 (C++)

無異常保證:此函式從不丟擲異常。

如果上述程式終止過程中丟擲異常,terminate 會被自動呼叫。

另見