printf除非换行符在格式字符串中,为什么在调用后不刷新?这是POSIX的行为吗?我怎么可能printf每次都立即冲洗?
我在下面的代码中使用ubuntu 14.04版本系统.我使用下面的代码:(下面的代码是无限循环)
#include <stdio.h>
#include <unistd.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
在下面的开头打印结果:
root@ubuntu:~/Desktop/my_test_code# ./issue
program start.
PID=3113
flag=0
...........//start waiting here,and don't print "loop_"
Run Code Online (Sandbox Code Playgroud)
然后在我等了很长时间后,这个程序打印了很多"loop_".我觉得很奇怪,应该打印一个字符串"loop_"然后,等一下,然后再打印一个"loop_",依此类推,为什么我等了很久,开始打印很多" loop_"?
任何人对我的问题都有任何想法.先感谢您.