abort

来自cppreference.com
< c‎ | program
在标头 <stdlib.h> 定义
void abort(void);
(C11 前)
_Noreturn void abort(void);
(C11 起)
(C23 前)
[[noreturn]] void abort(void);
(C23 起)

导致程序异常终止,除非传递给 signal 的信号处理函数正在捕捉 SIGABRT 且该处理函数不返回。

不调用传递给 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();
    }
 
    /* 正常处理持续至此。 */
    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 The abort function (第 255 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.22.4.1 The abort function (第 350 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.20.4.1 The abort function (第 315 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.10.4.1 The abort function

参阅

引发正常的程序终止并清理
(函数)
注册一个要在调用 exit() 时调用的函数
(函数)
引发正常的程序终止但不完全清理
(函数)