-1

这是 vfork() 的程序。该程序创建多个父子进程并在最后返回-1(意味着操作系统无法创建另一个进程)。为什么会发生这种行为?

#include<stdio.h>
void main()
{
  int pid;
  pid=vfork();
  printf("pid=%d\n",pid);
  if(pid==0)
  {
    printf("hello\n");
  }
}
4

1 回答 1

2

(1) 这会创建一个孩子。

(2) 与vfork子共享内存,直到调用exec或。_exit你也不叫。

(3) 父级的执行被暂停,直到子级调用exec_exit

所以基本上你的例子是FUBAR。vfork(如果现在真的有的话)的重点是提供一种快速fork机制,可以立即exec另一个程序。由于常规的写时复制行为,对此的需求已大大减少fork

于 2014-01-12T19:19:30.990 回答