这是vfork()的程序。此程序创建多个父进程和子进程,并在结尾返回-1(意味着OS无法创建另一个进程)。为什么会发生这种行为?
#include<stdio.h>
void main()
{
int pid;
pid=vfork();
printf("pid=%d\n",pid);
if(pid==0)
{
printf("hello\n");
}
}
答案 0 :(得分:2)
(1)这会创建一个孩子。
(2)使用vfork
,子项与父项共享内存,直到调用exec
或_exit
。你不打电话。
(3)父母的执行被暂停,直到孩子打电话给exec
或_exit
。
所以基本上你的例子是FUBAR。 vfork
(如果这些天确实有一个)的目的是提供一个快速fork
机制,立即exec
另一个程序。对于常规fork
的写时复制行为,对此的需求大大减少。