【发布时间】:2011-01-10 15:09:11
【问题描述】:
我不明白这个程序的输出:
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
int i = 0;
int main()
{
while(i<3)
{
fork();
printf("%d\n",i);
++i;
}
}
输出是:
0
1
2
2
1
2
0
1
2
2
2
1
2
2
请有人告诉我应该如何解决这个问题,以便完全理解为什么我会得到这个输出?
【问题讨论】:
-
您没有告诉我们您对此有何不满意。
-
我不喜欢,因为我不明白我们何时在父进程或子进程中增加 fork。通常,如果我们想在子进程中递增,我们会执行 if(fork()==0)++i;但是当我们像这样分叉时,我在中间有点迷失了!
-
根据答案:孩子增加孩子,父母增加父母,永远不会发生。
标签: c process global-variables fork