我正在學習與fork()
一起工作,並且我有一些問題。爲什麼分叉時在終端和文件之間有不同的輸出?
考慮下面的代碼:
#include <stdio.h>
#include <unistd.h>
int main()
{
int i;
for(i = 0; i < 5; i++)
{
printf("%d", i);
if((i%2)==0)
if(fork())
fork();
}
}
當我輸出到終端,我得到的結果,我希望(即:0,1,1,1,2,2,2,...
)。但是,當我輸出到文件,結果是完全不同:
例1:(輸出到終端,例如:
./a.out
):結果是:
0,1,1,1,2,2,2,...
情況2: (輸出到文件,例如:
./a.out > output_file
)結果是:
0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,...
這是爲什麼?
「完全不同」是什麼意思?你瞭解多處理,多個進程在同一時間工作嗎? –
不同的結果是什麼? – imreal
我們需要更多的代碼。你如何寫你的文件?文件上顯示的輸出是什麼? – Grambot