以下代码我使用 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;
}
在下面开始打印结果:
root@ubuntu:~/Desktop/my_test_code# ./issue
program start.
PID=3113
flag=0
...........//start waiting here,and don't print "loop_"
然后在我等了很长时间之后这个程序打印了很多“loop_”。 我觉得很奇怪,应该打印一个字符串“loop_”然后,稍等一下,然后再打印一个“loop_”,等等,为什么我等了很久,它开始打印很多“环形_” ?
有人对我的问题有任何想法。先感谢您。
最佳答案
printf
缓冲其输出(直到给定大小或 \n
),因此在刷新之前您看不到输出。
将循环更改为
printf("loop_");
fflush(stdout);
sleep(1);
应该可以解决您的问题。
关于c - 我在 ubuntu 中使用 sleep 函数,但是 printf 函数在 while 循环中运行非常慢。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34175317/