exit
来自 cppreference.cn
在头文件 <stdlib.h> 中定义 |
||
void exit( int exit_code ); |
(C11 之前) | |
_Noreturn void exit( int exit_code ); |
(C11 起) (直至 C23) |
|
[[noreturn]] void exit( int exit_code ); |
(自 C23 起) | |
导致正常程序终止。
执行几个清理步骤:
- 按注册的逆序调用传递给 atexit 的函数。
- 所有 C 流都被冲洗并关闭。
- 由 tmpfile 创建的文件被删除。
- 控制权返回给宿主环境。如果
exit_code
为零或 EXIT_SUCCESS,则返回一个指示成功终止的实现定义状态。如果exit_code
为 EXIT_FAILURE,则返回一个指示不成功终止的实现定义状态。在其他情况下,返回实现定义的状态值。
目录 |
[编辑] 注意
未调用通过 at_quick_exit 注册的函数。
如果程序多次调用 exit
,或者同时调用 exit
和 quick_exit,则行为未定义。
如果在调用通过 atexit 注册的函数期间,该函数通过 longjmp 退出,则行为未定义。
从 main 函数返回,无论是通过 return
语句还是通过到达函数末尾,都会执行 exit()
,将 return
语句的参数(如果使用了隐式返回,则为 0)作为 exit_code
传递。
[编辑] 参数
exit_code | - | 程序的退出状态 |
[编辑] 返回值
(无)
[编辑] 示例
运行此代码
#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"); exit( EXIT_FAILURE ); } fclose(fp); printf("Normal Return\n"); return EXIT_SUCCESS ; }
可能的输出
error opening file data.txt in function main()
[编辑] 参考
- C17 标准 (ISO/IEC 9899:2018)
- 7.22.4.4 exit 函数 (p: 256)
- C11 标准 (ISO/IEC 9899:2011)
- 7.22.4.4 exit 函数 (p: 351-352)
- C99 标准 (ISO/IEC 9899:1999)
- 7.20.4.3 exit 函数 (p: 315-316)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.10.4.3 exit 函数
[编辑] 另请参阅
导致程序异常终止(不进行清理) (函数) | |
注册一个在调用 exit() 时被调用的函数 (函数) | |
(C11) |
导致正常程序终止,但不完全清理 (函数) |
C++ 文档 关于 exit
|