【发布时间】:2021-12-13 15:10:01
【问题描述】:
我的代码:
#include <stdio.h>
#include <unistd.h>
int main(){
printf("I sleep\n");
sleep(3);
printf("\033[H\033[J");
return 0;
}
如果我不在 printf 函数中写“\n”,则不会显示“I sleep”,直到 sleep(3) 完成。
谁能解释一下?谢谢!
【问题讨论】:
-
这是因为
stdout(通常)是行缓冲的。尝试fprintfing 到stderr而不使用'\n',它应该可以正常工作。 -
printf("I sleep"); fflush(stdout);可能是一个选项 -
当然我们必须有一些好的副本?不过我找不到。
-
@AdrianMole 看起来不错。