函数
<cstdlib>

abort

void abort (void);
[[noreturn]] void abort() noexcept;
中止当前进程
中止当前进程,导致程序异常终止。

该函数引发 SIGABRT 信号(如同调用 raise(SIGABRT) 一样)。如果未捕获,这将导致程序终止,并向宿主环境返回一个平台相关的不成功终止错误码。

程序将在不销毁任何对象也不调用任何通过 atexitat_quick_exit 传递的函数的情况下终止。

参数



返回值

无(该函数永不返回)。

示例

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

int main ()
{
  FILE * pFile;
  pFile= fopen ("myfile.txt","r");
  if (pFile == NULL)
  {
    fputs ("error opening file\n",stderr);
    abort();
  }

  /* regular process here */

  fclose (pFile);
  return 0;
}

如果已知myfile.txt不存在,会打印一条消息并调用 abort

数据竞争

并发调用此函数是安全的,不会导致数据竞争。
但请注意,其处理过程可能会影响所有线程。

异常 (C++)

如果没有使用 signal 定义用于处理 SIGABRT 的函数处理器,则该函数永远不会抛出异常(无抛出保证)。
否则,行为取决于具体的库实现。

另见