命名空间
变体
操作

退出

来自 cppreference.com
< c‎ | 程序
在头文件 <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_codeEXIT_FAILURE,则返回表示失败终止的实现定义状态。在其他情况下,返回实现定义的状态值。

内容

[编辑] 注释

使用 at_quick_exit 注册的函数不会被调用。

如果程序多次调用 exit,或者它调用了 exitquick_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() 调用时被调用
(函数) [编辑]
导致程序正常终止,但不完全清理
(函数) [编辑]
C++ 文档 for exit