命名空间
变体
操作

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