有人能详细解释一下我用叉子干什么的吗
#include<unistd.h>
#include<stdio.h>
int main ()
{
int i, b;
for (i = 0; i < 2; i++) {
fflush (stdout);
b = fork ();
if (b == -1) {
perror ("error forking");
}
else if (b > 0) //parent process
{
wait ();
printf ("\nparent %d", getpid ());
}
else
printf ("\nchild %d %d", getpid (), getppid ());
}
return 0;
}
我只需要知道,如果fork和parent有相同的代码,那么这个for循环永远不会停止创建子进程(每个子进程都有自己的for循环)
最佳答案
是的,每个孩子都会继续循环,但这里的关键词是“继续”。变量i
将由第一个子继承,然后增加,增加的值由第二个子继承,等等。
同样的情况也会发生在子进程中,因为i
是继承的,并且保留父进程的值。这意味着循环很快就会在所有的孩子身上结束。