【发布时间】:2015-01-03 09:44:21
【问题描述】:
我正在尝试理解 fork(),所以我整理了以下示例:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
void main()
{
if(fork()==0)
{
printf("2");
if(fork()==0)
{
printf("4");
}
else
{
printf("3");
}
}
else
{
printf("1");
}
}
当我在纸上描绘时,我画了以下草图:
所以我认为输出应该是1234。但是,当我运行这段代码时,输出是12324。 这是为什么呢?我的错在哪里?
更新:
看完cmets后,建议做以下任一操作
- 将
\n添加到每个 printf 语句 - 或:在每个 printf 语句后添加
fflush(stdout); - 或者:添加
setbuf(stdout, NULL);
更新我的代码后,输出确实是1234。
【问题讨论】: