函数
<cstdlib>

quick_exit

_Noreturn void quick_exit (int status);
[[noreturn]] void quick_exit (int status) noexcept;
快速终止调用进程
通过调用所有使用 at_quick_exit 注册的函数后,将控制权返回给宿主环境,从而正常终止进程。

不执行额外的清理任务:不调用对象析构函数。但是否关闭和/或刷新 C 流,以及是否移除用 tmpfile 打开的文件,取决于特定的系统或库实现。

如果 status 为零或 EXIT_SUCCESS,则向宿主环境返回一个“成功终止”状态。
如果 statusEXIT_FAILURE,则向宿主环境返回一个“不成功终止”状态。
否则,返回的状态取决于系统和库的实现。

如果一个程序同时调用了 exitquick_exit,或者多次调用 quick_exit,将导致“未定义行为”。

参数

状态
状态码。
如果此值为 0EXIT_SUCCESS,表示成功。
如果此值为 EXIT_FAILURE,表示失败。

返回值

无(该函数永不返回)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* quick_exit example */
#include <stdio.h>      /* puts */
#include <stdlib.h>     /* at_quick_exit, quick_exit, EXIT_SUCCESS */

void fnQExit (void)
{
  puts ("Quick exit function.");
}

int main ()
{
  at_quick_exit (fnQExit);
  puts ("Main function: Beginning");
  quick_exit (EXIT_SUCCESS);
  puts ("Main function: End");  // never executed
  return 0;
}

输出
Main function: Beginning
Quick exit function.


数据竞争

并发地多次调用此函数没有效果。
在调用此函数之前未完成的对 at_quick_exit 的调用可能不会成功(取决于特定的库实现)。

异常 (C++)

无异常保证:此函数从不抛出异常。

如果任何用 at_quick_exit 注册的函数抛出异常,terminate 会被自动调用。

另见