exit

来自cppreference.com
< c‎ | program
定义于头文件 <stdlib.h>
void exit( int exit_code );
(C11前)
_Noreturn void exit( int exit_code );
(C11起)

导致正常程序终止。

会做一些清理步骤:

  • 以注册顺序的逆序调用传递给atexit的函数
  • 冲入并关闭所有C流
  • 删除掉tmpfile创建的文件
  • 将控制返回给宿主环境。若exit_code是零或实现定义的状态EXIT_SUCCESS,则指明返回成功的终止。若exit_code为实现定义的状态EXIT_FAILURE,则指明返回不成功的终止。其他情况下返回实现定义的值。

目录

[编辑] 注意

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

若一个程序调用exit多于一次,或它调用exitquick_exit,则行为未定义。

若在以exit注册的函数调用时,该函数以longjmp退出,则行为未定义。

通过return语句或以到达函数结尾,从main函数返回时,会执行exit(),作为exit_code传递给它的参数是返回语句的参数(若使用隐式返回,则为0)。

[编辑] 参数

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(1);
    }
    fclose(fp);
    printf("Normal Return\n");
}

输出:

error opening file data.txt in function main()

[编辑] 参考

  • C11 standard (ISO/IEC 9899:2011):
  • 7.22.4.4 The exit function (p: 351-352)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.20.4.3 The exit function (p: 315-316)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.10.4.3 The exit function

[编辑] 参阅

引发非正常的程序终止(不清理)
(函数) [edit]
注册一个函数使其在调用exit()时被调用
(函数) [edit]
引发正常的程序终止但不完全清理
(函数) [edit]
exitC++文档