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