这是vfork()的程序。该程序创建多个父进程和子进程,并在末尾返回-1(意味着OS无法创建另一个进程)。为什么会发生这种行为?
#include<stdio.h>
void main()
{
int pid;
pid=vfork();
printf("pid=%d\n",pid);
if(pid==0)
{
printf("hello\n");
}
}
最佳答案
(1)这将创建一个孩子。
(2)使用vfork
子级与父级共享内存,直到调用exec
或_exit
为止。你都不打。
(3)暂停执行父级的执行,直到子级调用exec
或_exit
。
因此,基本上您的示例是FUBAR。 vfork
的要点(如果最近确实有这种情况)是提供一种快速的fork
机制,该机制将立即exec
另一个程序。常规fork
的写时复制行为已大大减少了对此的需要。
关于linux - 如何使用vfork创建多个进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21078881/