我在下面的代码中使用ubuntu 14.04版本系统.我使用下面的代码:(下面的代码是无限循环)
#include#include int flag=0; int main(void){ printf("program start.\n"); printf("PID=%d\n",getpid()); printf("flag=%d\n",flag); //-----------I feel weired below do...while... sentences----------// do{ printf("loop_"); sleep(1); }while(flag==0); printf("program exit.\n"); return 0; }
在下面的开头打印结果:
root@ubuntu:~/Desktop/my_test_code# ./issue program start. PID=3113 flag=0 ...........//start waiting here,and don't print "loop_"
然后在我等了很长时间后,这个程序打印了很多"loop_".我觉得很奇怪,应该打印一个字符串"loop_"然后,等一下,然后再打印一个"loop_",依此类推,为什么我等了很久,开始打印很多" loop_"?
任何人对我的问题都有任何想法.先感谢您.
printf
缓冲其输出(直到给定的大小或\n
),因此在刷新之前您不会看到输出.
将你的循环改为
printf("loop_"); fflush(stdout); sleep(1);
应该解决你的问题.