我想知道我们是否使用vfork,我们如何知道子进程或父进程,因为资源是共享的。更具体地说,假设以下代码:
int main()
{
int pid = vfork();
if(pid == 0)
{
// code for child
}
else
{
// code for parent
}
return 0;
}
在上面的代码中,如果资源是共享的,那么pid变量将具有uniqe值,那么这个代码有效吗,因为我看到了一些例子,它们是按照上面的代码来做的。
vfork()
挂起父级,直到子级调用exec*()
或_exit()
。
以这种格式使用vfork()
就像我们使用fork()
一样,会导致程序在无限循环中运行。它没有结束
阅读本讨论以更好地了解使用vfork()
。
在vfork中,父级将等待子级完成,因此不需要区分。
这个代码有效吗?
是的。vfork()
仍然会复制父进程(概念上(,并且像正常的fork()
一样,在子进程中它将返回0,在父进程中返回该子进程的pid。