我以为我在这里做一些简单的事情,但 C 决定对我进行异步处理。我不确定发生了什么事。这是我的代码:
#include <stdio.h>
int main() {
printf("start");
sleep(5);
printf("stop");
}
当我编译和运行时,我注意到它sleep(5)
就像一个魅力。但是编译器认为跳过第一个printf()
并出现乱序是个好主意,所以在运行时,程序等待 5 秒然后打印startstop
.
这是怎么回事?我的理论是程序使用 shell 启动打印操作,然后继续执行程序,让 Bash 等到程序不再忙于实际呈现字符串。但我真的不知道。
谢谢