名稱空間
變體
操作

abort

來自 cppreference.com
< c‎ | program
在標頭檔案 <stdlib.h> 中定義
void abort(void);
(C11 之前)
_Noreturn void abort(void);
(C11 起)
(直至 C23)
[[noreturn]] void abort(void);
(自 C23 起)

導致程式異常終止,除非 SIGABRT 被傳遞給 signal 的訊號處理程式捕獲,並且處理程式不返回。

傳遞給 atexit() 的函式不會被呼叫。諸如檔案之類的開放資源是否關閉是實現定義的。一個實現定義的狀態將返回給主機環境,表示執行失敗。

目錄

[編輯] 引數

(無)

[編輯] 返回值

(無)

[編輯] 注意

POSIX 規定 abort() 函式會覆蓋阻塞或忽略 SIGABRT 訊號。

一些編譯器內在函式,例如 __builtin_trap (gcc, clang, 和 icc) 或 __fastfail/__debugbreak (msvc),可以用於儘快終止程式。

[編輯] 示例

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    FILE *fp = fopen("data.txt","r");
    if (fp == NULL)
    {
        fprintf(stderr, "error opening file data.txt in function main()\n");
        abort();
    }
 
    /* Normal processing continues here. */
    fclose(fp);
    printf("Normal Return\n");
    return 0;
}

輸出

error opening file data.txt in function main()

[編輯] 參考

  • C17 標準 (ISO/IEC 9899:2018)
  • 7.22.4.1 abort 函式 (p: 255)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.22.4.1 abort 函式 (p: 350)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.20.4.1 abort 函式 (p: 315)
  • C89/C90 標準 (ISO/IEC 9899:1990)
  • 4.10.4.1 abort 函式

[編輯] 另請參閱

導致程式正常終止並進行清理
(函式) [編輯]
註冊一個函式,以便在呼叫 exit() 時被呼叫
(函式) [編輯]
導致正常程式終止,但不完全清理
(函式) [編輯]
C++ 文件 關於 abort