在下面的代码中,我使用了2条printf语句。问题是iam将输出显示为“ hi hello hi hello”而不是“ hi hello hello”

时间:2019-12-21 05:45:04

标签: c

#include<stdio.h>
#include<Unistd.h>
Void main()
  { Printf("hi");
    fork();
    Printf("hello");
   }

Output: hi hello hi hello “但是当我在printf语句中使用\ n时,我将输出作为”

Output: hi
        hello
        hello 

[但是\ n用于在新行中显示语句,但是为什么我会得到这种区别] 谢谢...

1 个答案:

答案 0 :(得分:1)

printf缓冲其输出,而当您fork时,现在输出在两个程序的缓冲区中,因此它们最终都将输出它。要修复它,您应该通过执行fflush(stdout)强制在分叉前立即刷新缓冲区。您看不到\n的问题,因为使用\n还会刷新缓冲区。