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 (Red Hat 4.1.2-48) を使用しています
事前にどうもありがとう