sleep,该怎么处理

sleep
在suse 10下编程,代码如下

C/C++ code


#include <stdio.h>
#include <unistd.h>

int main(void) {
    int i;
    for (i = 0; i < 4; i++) {
        printf("%d",i);
        sleep(1);
    }
    return 0;
}

执行,发现程序先等了4秒,再连续输出0123
试着把sleep(1)换成一个空循环,居然也会先全等完,再连续输出。
有没有人遇到过这种情况?这是为什么?


因为你的printf里面没有加\n的输出,这个时候的输出是保存在缓冲区里面的,并不会直接输出,要等程序结束的时候才会输出.
如果你需要马上输出,建议使用:
printf("%d\n",i);
如果你不希望换行,可以使用:
printf("%d",i);
fflush(stdout);

sleep,该怎么处理

相关文章:

你感兴趣的文章:

标签云: