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