如何使用fork()系统调用创建一个级别的进程树?

时间:2016-03-04 02:09:34

标签: c++ c fork systems-programming

我想使用fork()系统调用创建一个级别的进程树,如下所示 对于n = 4过程

enter image description here

我用以下代码尝试了这个,但这不起作用。 (这里1是父进程的孩子)

Liam got 6,andy got 6

我该怎么做?

1 个答案:

答案 0 :(得分:1)

#include<stdio.h>

int main()
{
  int i;
  pid_t  pid;

  for(i=0; i<5; i++)
  {
    pid = fork();
    if(pid == 0)
      break;
  }
  printf("pid %d ppid %d\n", getpid(), getppid());
  if(pid == 0)
  {
    /* child process */
  }
}

根据讨论,这是修改后的程序。

#include<stdio.h>
#include<unistd.h>

int main()
{
  int i;
  pid_t  pidparent, pid;

  if( (pidparent = fork()) == 0 )
  {
    for(i=0; i<3; i++)
    {
      pid = fork();
      if(pid == 0)
        break;
    }
    if(pid == 0)
    {
      printf("child %d parent %d\n", getpid(), getppid());
    }
  }
  else
  {
    printf("parent %d \n", pidparent);
  }
  /* printf("pid %d ppid %d\n", getpid(), getppid()); */
}