我以为我在这里做了简单的事情,但C决定对我进行异步处理。我不确定发生了什么事。这里是我的代码:为什么在打印任何内容之前,执行printf()函数,调用sleep(),为什么执行?
#include <stdio.h>
int main() {
printf("start");
sleep(5);
printf("stop");
}
当我编译和运行,我注意到sleep(5)
的作品就像一个魅力。但编译器认为跳过第一个printf()
并且出现故障是一个好主意,所以在运行时,程序等待5秒,然后打印startstop
。
这是怎么回事?我的理论是程序用shell启动打印操作,然后继续执行程序,让Bash等到程序不再忙时再实际渲染字符串。但我真的不知道。
由于
[为什么printf在调用后不刷新,除非换行符在格式字符串中?](http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-这是一个新的电话号码格式的限制) – 2013-04-24 02:54:31
[为什么printf()在sleep()之前不打印任何东西?](https://stackoverflow.com/questions/ 338273/why-does-printf-not-print-anything-before-sleep) – 2017-07-26 22:37:10