这是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/

10-11 04:29