如何使用vfork创建多个进程?

时间:2014-01-12 18:55:50

标签: linux operating-system fork vfork

这是vfork()的程序。此程序创建多个父进程和子进程,并在结尾返回-1(意味着OS无法创建另一个进程)。为什么会发生这种行为?

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

1 个答案:

答案 0 :(得分:2)

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

(2)使用vfork,子项与父项共享内存,直到调用exec_exit。你不打电话。

(3)父母的执行被暂停,直到孩子打电话给exec_exit

所以基本上你的例子是FUBAR。 vfork(如果这些天确实有一个)的目的是提供一个快速fork机制,立即exec另一个程序。对于常规fork的写时复制行为,对此的需求大大减少。