【发布时间】:2016-07-20 10:36:22
【问题描述】:
我正在检查 fork 系统调用的行为。我执行了以下程序。
#include<stdio.h>
int count=0;
int main()
{
int i;
int n=3;
for(i=1;i<=n;++i)
{
printf(" %d ",i);
fork();
}
}
我有一个想法,在 for loop 中包含 fork() 类似于串联编写它,即
for(i=1;i<=3;i++)
fork();
类似于
fork();
fork();
fork();
我预计输出是八个连续的 3。但输出如下:
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
注意:在gcc中编译执行
【问题讨论】:
-
我认为如果每次调用都刷新标准输出行缓冲区,您可能会发现输出有点不同。它应该包含一个 1、两个 2 和四个 3。
-
涉及输出缓冲