exit
|
定义于头文件
<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 退出,则行为是未定义的。
从
主函数
返回时,无论是通过
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函数(页码:315-316)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 4.10.4.3 exit 函数
参见
|
导致程序异常终止(不进行清理操作)
(函数) |
|
|
注册在
exit()
调用时要执行的函数
(函数) |
|
|
(C11)
|
导致程序正常终止但不完全清理资源
(函数) |
|
C++ 文档
关于
exit
|
|