我正在学习与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