命名空间
变体
操作

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(),将 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++ 文档 关于 exit