C exit()函数 - 它的作用是什么?

时间:2014-04-10 04:25:00

标签: c exit

我正在学习C.

如果我是:

void fun(){
      exit(0);
}

void main(){
    /*instructions*/
    fun();
    /*other-instructions*/
}

当功能"有趣"被叫,我退出(0)。一旦退出(0)执行,它会关闭所有内容吗?或其他指令执行? exit(0)和exit(-1)之间的区别是什么?我是否必须#include一些东西来使用退出功能?

谢谢你的帮助!

4 个答案:

答案 0 :(得分:6)

通常,exit(n)会退出您的程序,而不再运行您的代码,并使程序“状态代码”(在shell中看到的错误编号)等于{{1 (尽管可能会忽略高位)。

更准确地说,n将为C库做一些清理工作。特别是它将调用您使用exit()注册的关闭函数(有关更多详细信息,请参阅文档)。最后,它调用atexit系统调用,它将控制转移到内核并告诉内核停止调用进程。内核将释放进程内存,关闭文件和套接字等。

答案 1 :(得分:3)

void exit(int status);

终止呼叫流程

正常终止进程,执行常规清理以终止程序。

请注意,调用exit(C ++)不会破坏具有自动存储的对象。

如果status为零或EXIT_SUCCESS,则会向主机环境返回成功的终止状态。 如果status为EXIT_FAILURE,则会向主机环境返回不成功的终止状态。 否则,返回的状态取决于系统和库的实现。

对于不执行上述清理的类似功能,请参阅quick_exit。

<强>参数

状态 - 状态代码。

   If this is 0 or EXIT_SUCCESS, it indicates success.
   If it is EXIT_FAILURE, it indicates failure. 

返回值

none(函数永不返回)。

示例

/* exit example */
#include <stdio.h>      /* printf, fopen */
#include <stdlib.h>     /* exit, EXIT_FAILURE */

int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","r");
  if (pFile==NULL)
  {
    perror ("myfile.txt");
    exit (EXIT_FAILURE);
  }
  else
  {
    /* file operations here */
  }
  return 0;
}

答案 2 :(得分:2)

exit()退出程序,而不仅仅是当前函数,因此不会执行其他指令 您传递给退出的号码称为返回状态。你可以阅读this来了解C

中的退出功能

答案 3 :(得分:2)

terminates program,意味着没有进一步的execution将完成.0意味着终止没有错误,1意味着终止错误。你必须包括stdlib.h到用它。