exit

来自cppreference.com
< 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 语句还是抵达函数尾,都会将 return 语句的实参(或若使用隐式返回,则为 0)作为 exit_code 传递并执行 exit()

参数

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 The exit function (第 256 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.22.4.4 The exit function (第 351-352 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.20.4.3 The exit function (第 315-316 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.10.4.3 The exit function

参阅

引发非正常的程序终止(不清理)
(函数)
注册一个要在调用 exit() 时调用的函数
(函数)
引发正常的程序终止但不完全清理
(函数)