Namespaces
Variants

exit

From cppreference.net
定义于头文件 <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() 调用时要执行的函数
(函数)
导致程序正常终止但不完全清理资源
(函数)
C++ 文档 关于 exit