我正在学习C.
如果我是:
void fun(){
exit(0);
}
void main(){
/*instructions*/
fun();
/*other-instructions*/
}
当功能"有趣"被叫,我退出(0)。一旦退出(0)执行,它会关闭所有内容吗?或其他指令执行? exit(0)和exit(-1)之间的区别是什么?我是否必须#include一些东西来使用退出功能?
谢谢你的帮助!
答案 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
到用它。