我以爲我在這裏做了簡單的事情,但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