命名空间
变体
操作

exit

来自 cppreference.cn
< c‎ | program
定义于头文件 <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(),并将返回语句的参数(如果使用了隐式返回,则为 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++ 文档 关于 exit