【发布时间】:2014-04-16 17:05:37
【问题描述】:
我需要的是有 3 个孩子和 1 个父母(主程序),因为孩子和父母将有不同的功能。 我不知道为什么我不能正确地做到这一点,据我所知,当你执行 fork() 时,如果它返回 0,则执行子代码,否则执行父代码。 所以,这是我的程序:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int
main(int argc, char ** argv) {
printf ("Init Parent. PID =%d\n", getpid());
fork();
fork();
if (fork() == 0) {
printf ("Init Child. PID =%d\n", getpid());
sleep(1);
} else {
printf ("I am the parent. PID = %d\n",getpid());
sleep(1);
}
exit(0);
}
这是输出:
Init Parent. PID =9007
I am the parent. PID = 9007
I am the parent. PID = 9009
Init Child. PID =9010
Init Child. PID =9011
I am the parent. PID = 9008
I am the parent. PID = 9012
Init Child. PID =9013
Init Child. PID =9014
这就是我想要的:
Init Parent. PID =9007
I am the parent. PID = 9007
Init Child. PID =9010
Init Child. PID =9011
Init Child. PID =9013
Init Child. PID =9014
我不知道为什么它说我是父母 3 次以及如何正确地做到这一点,因为 1
if (fork() == 0)
看起来很糟糕。
非常感谢任何帮助,在此先感谢您。
【问题讨论】:
标签: c process fork parent-child