这是vfork()的程序。该程序创建多个父进程和子进程,并在末尾返回 -1(表示操作系统无法创建另一个进程)。为什么会发生这种行为?
#include<stdio.h>
void main()
{
int pid;
pid=vfork();
printf("pid=%dn",pid);
if(pid==0)
{
printf("hellon");
}
}
(1) 这将创建一个孩子。
(2) 使用vfork
子项与父项共享内存,直到调用exec
或_exit
。 你叫都不。
(3)父母的执行暂停,直到孩子打电话exec
或_exit
。
所以基本上你的例子是 FUBAR。 vfork
的要点(如果现在真的有的话)是提供一个快速fork
机制,该机制将立即exec
另一个程序。 随着常规fork
的写入时复制行为,对此的需求大大减少。