考虑以下代码:
int main()
{
int pid;
pid=vfork();
if(pid==0)
printf("child\n");
else
printf("parent\n");
return 0;
}
在vfork()的情况下,父进程和子进程使用的地址空间相同,因此变量 pid 的单个副本应该在那里。现在我无法理解这个 pid 变量如何具有vfork()返回的两个值,即子级为零,父级非零?
在fork()的情况下,地址空间也会被复制,并且每个子节点和父节点都有两个 pid 变量副本,所以我可以理解在这种情况下,两个不同的副本可以具有由fork()返回的不同值但无法理解在vfork()的情况下, pid 如何有两个由vfork()返回的值?