孩子创建自己的孩子(通过调用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");
}
答案 0 :(得分:1)
任何进程都可以调用fork()
,这样就可以形成进程树。
这就是您的示例中发生的情况,ChildProcess
的打印输出将出现两次。