当前位置: C语言 -- 标准库 -- <stdlib.h> -- quick_exit

quick_exit函数


概要:
#include <stdlib.h>
_Noreturn void quick_exit(int status);

描述:

该函数正常终止程序执行

通过atexit函数注册的函数以及通过signal函数注册的信号处理函数不会被调用。如果一个程序多次调用quick_exit函数或者除了调用quick_exit函数外,还调用了exit函数,程序行为是未定义的。如果quick_exit函数执行时引发信号,其行为是未定义的。


调用quick_exit函数,会经过以下2个步骤:

1、所有通过at_quick_exit函数注册的函数将会按注册顺序逆顺调用;

如果at_quick_exit函数调用发生在quick_exit函数之后,at_quick_exit函数能否调用成功ISO/IEC 9899:2018标准未作明确说明。如果在调用此类函数的过程中,调用了终止注册函数调用的longjmp函数,其行为是未定义的。

2、通过调用_Exit(status)函数将控制权返还给宿主环境。


如果参数status的值为0或者EXIT_SUCCESS,返回成功终止状态的实现定义形式;如果参数status的值为EXIT_FAILURE,返回不成功终止状态的实现定义形式;否则返回状态由实现定义。

程序终止时,未写入的缓冲数据是否刷新、打开的流是否关闭以及临时文件是否删除将由实现定义。


参数:
int status

状态代码,说明程序的退出状态。


返回值:

函数不会返回给调用者。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
/*函数quick_exit范例*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *pFile;

    pFile = fopen("abc.txt", "r");
    if(pFile==NULL)
    {
        perror("Error opening file");
        quick_exit(EXIT_FAILURE);
    }

    fclose(pFile);
    
    quick_exit(EXIT_SUCCESS);
}


结果:

假设名为abc.txt的文件不存在,将输出:

Error opening file: no such file or directory

然后调用quick_exit(EXIT_FAILURE)函数终止程序。

假设名为abc.txt的文件存在,将调用quick_exit(EXIT_SUCCESS)函数终止程序。

注:使用Pelles C编译。


相关内容:
abort 异常终止程序的函数。
_Exit 正常终止程序的函数。
exit 正常终止程序的函数。