非常教程

C参考手册

编程支持 | Program support

exit

在头文件<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或者调用exit和quick_exit,则行为是不确定的。

如果在调用使用atexit注册的函数期间,行为是不确定的,函数将以longjmp退出。

从主函数返回,通过返回语句或到达函数结尾,执行exit(),将return语句的参数(如果使用隐式返回,则返回0)作为exit_code。

参数

exit_code

-

退出程序的状态

返回值

(none).

#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标准(ISO / IEC 9899:2011):
    • 7.22.4.4退出功能(p:351-352)
  • C99标准(ISO / IEC 9899:1999):
    • 7.20.4.3退出功能(p:315-316)
  • C89 / C90标准(ISO / IEC 9899:1990):
    • 4.10.4.3退出功能

扩展内容

abort

导致程序异常终止(不清除)(功能)

atexit

注册要在exit()调用(函数)上调用的函数

quick_exit(C11)

导致正常程序终止而没有完全清理(功能)

| 用于退出的C ++文档|

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。