我本以为这是一件简单的事情,但是C语言却采用了异步机制,我不确定具体发生了什么。以下是我的代码:
#include <stdio.h>
int main() {
printf("start");
sleep(5);
printf("stop");
}
当我编译和运行时,我发现
sleep(5)
的效果非常好。但编译器决定跳过第一个 printf()
,并且按顺序退出,所以运行程序时,程序会等待 5 秒钟,然后打印出 startstop
。这是怎么回事?我的理论是,程序通过 shell 启动打印操作,然后继续执行程序,让 Bash 等待程序不再繁忙才能实际呈现字符串。但我真的不知道。
谢谢