【发布时间】:2024-04-10 21:25:01
【问题描述】:
我对 UNIX 中进程的结束感到困惑。 UNIX 中的进程何时终止?我们是否必须写exit(0) 来终止进程?在我看来 - 不,但我无法弄清楚这两段代码之间的区别。
pid_t pid=fork();
if(pid < 0)
{
perror("Fork error\n");
return 1;
}
else if (pid==0) /* child */
{
//Do some operations here
}
else
{
wait(NULL);
//Do some operations
}
和
pid_t pid=fork();
if(pid < 0)
{
perror("Fork error\n");
return 1;
}
else if (pid==0) /* child */
{
//Do some operations here
exit(0);
}
else
{
wait(NULL);
//Do some operations here
}
可能我们只需要exit(0) 来实现wait() 函数。在这种情况下,如果我们在没有完成 exit(0) 的情况下制作 wait() 会发生什么
前?
【问题讨论】:
-
当主程序返回时,将调用exit。
-
每次我想退出进程时都应该使用 exit 吗?如果我使用或不使用 exit 有什么区别?
-
如果不在
main中,则必须使用exit。 return 在 main 中是等价的,所以这取决于你。 -
但我仍然不明白是否可以在不调用exit的情况下终止进程。另外,我在问题中描述的两个示例之间有什么区别?
-
如果是主要的,那就没有区别了。