c - 我在 ubuntu 中使用 sleep 函数,但是 printf 函数在 while 循环中运行非常慢。为什么?

标签 c ubuntu

以下代码我使用 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/

相关文章:

c - 如何使用 C-API 执行 sqlite 的点命令

ubuntu - 带有 Vagrant 的 Ubuntu 14.10 上的 Laravel

linux - 创建到多个目录centos的符号链接(symbolic link)

将 MIPS32 转换为 C : adding an array's base address to arbitrary value and its meaning

C 以字节 block 读取文件

c - C 程序中的文本文件到位图

c - C语言的回文查找器?

ubuntu - 在 Ubuntu 18.04 中更新 gcc 替代品 - g++ 不能成为 gcc 的奴隶

python - Pygame 已经安装;但是,python 终端说 "No module named ' pygame'"(Ubuntu 20.04.1)

python - 在 python : Unknown characters 中读取 arduino 串行连接