Process
為什麼當我用 CTRL-Z 停止睡眠命令程序時,它仍在後台執行?
我要做的是:
sleep 5
並立即
CTRL
-Z
所以當我打開時,jobs
我看到:[1]+ Stopped sleep 5
接下來當我做
fg %1
睡眠過程不再執行時,它已經完成了,這意味著它正在執行那 5(也許是 4?)秒Stopped
。為什麼?
該實用程序呼叫
xnanosleep()
它又呼叫 linux 核心nanosleep()
系統呼叫。無論應用程序執行/停止狀態如何,它都可以工作,但是當應用程序停止時,它無法退出,這意味著當您取消暫停時它會這樣做。https://linux.die.net/man/2/nanosleep
至於
Ctrl
+Z
它會發送一個鍵盤停止信號,該信號可以被應用程序攔截,但在這種情況下它不會完成,因為無論如何都可以nanosleep()
再次工作。/usr/include/bits/signum-arch.h #define SIGSTOP 19 /* Stop, unblockable. */ #define SIGTSTP 20 /* Keyboard stop. */