我想知道我们是否使用vfork,我们如何知道子进程或父进程,因为资源是共享的。 更具体地说,假设以下代码:
int main()
{
int pid = vfork();
if(pid == 0)
{
// code for child
}
else
{
// code for parent
}
return 0;
}
在上面的代码中,如果资源是共享的,那么pid变量将具有uniqe值,那么这段代码是否有效?因为我已经看过像上面代码做的事情。
答案 0 :(得分:2)
vfork()
暂停家长,直到孩子拨打exec*()
或_exit()
。
在我们使用vfork()
时使用此格式的fork()
会导致程序在无限循环中运行。它没有结束
阅读此discussion以更好地了解如何使用vfork()
。
答案 1 :(得分:0)
在vfork中,父母将等待孩子完成,因此无需区分。
答案 2 :(得分:0)
此代码有效吗?
是。 vfork()
仍然会创建父进程的副本(概念上),并且作为普通fork()
,在子进程中它将在父进程中返回0,该子进程的pid。