Namespaces
Variants

abort

From cppreference.net
定义于头文件 <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();
    }
    /* 正常处理从此处继续 */
    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函数(页码:315)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 4.10.4.1 abort 函数

参见

导致正常程序终止并进行清理
(函数)
注册在调用 exit() 时要执行的函数
(函数)
导致正常程序终止但不完全清理
(函数)
C++ 文档 关于 abort