首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

sleep,该怎么处理

2012-02-07 
sleep在suse 10下编程,代码如下C/C++ code#include stdio.h#include unistd.hint main(void) {int if

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);

热点排行