<分区>
我只是在试验 fork() c++ 函数。但我发现了令人惊讶的结果
#include<stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <signal.h>
int main()
{
int x=0;
int i;
for( i=0;i<2;i++)
{
fork();
x=x+5;
printf("%d\n",x);
sleep(2);
}
return 0;
}
这段代码给出了预期的输出 5
5
10
10
10
10
但是当我用空格替换 printf 中的新行时,相同的代码表现得非常不同
int main()
{
int x=0;
int i;
for( i=0;i<2;i++)
{
fork();
x=x+5;
printf("%d ",x);
sleep(2);
}
return 0;
}
5 10 5 10 5 10 5 10
谁能告诉我为什么用空格替换新行时会出现如此异常的结果。
我正在使用 gcc 编译器 gcc 版本 4.1.2 20080704(红帽 4.1.2-48)
提前致谢