孩子创建自己的孩子(通过调用fork)是否有意义?

时间:2014-01-31 11:41:26

标签: process fork

孩子创建自己的孩子(通过调用fork)是否有意义?

在下面的代码中,我无法理解调用fork的子代的效果:

#include  <stdio.h>
#include  <sys/types.h>

#define   MAX_COUNT  200

void  ChildProcess(void);                /* child process prototype  */
void  ParentProcess(void);               /* parent process prototype */

void  main(void)
{
     pid_t  pid;

     pid = fork();
     if (pid == 0) 
          ChildProcess();
     else 
          ParentProcess();
}

void  ChildProcess(void)
{
     int   i;

  fork();   // child creates its own child process 



     for (i = 1; i <= MAX_COUNT; i++)
          printf("   This line is from child, value = %d\n", i);
     printf("   *** Child process is done ***\n");
}

void  ParentProcess(void)
{
     int   i;

     for (i = 1; i <= MAX_COUNT; i++)
          printf("This line is from parent, value = %d\n", i);
     printf("*** Parent is done ***\n");
}

1 个答案:

答案 0 :(得分:1)

任何进程都可以调用fork(),这样就可以形成进程树。

这就是您的示例中发生的情况,ChildProcess的打印输出将出现两次。