Linux
為什麼通過exit關閉終端后命令繼續執行?
為什麼當我
command & exit
在終端(如vimiv & exit
)關閉終端時vimiv繼續執行?我希望vimiv在目前終端中作為後台作業啟動,然後在終端關閉並退出時收到一聲**嘆息。**例如,如果我執行vimiv &
後跟另一個exit
命令,vimiv將關閉
我希望 vimiv 在目前終端中作為後台作業啟動,然後在終端關閉並退出時收到一聲嘆息。
不,這不是發生的事情。如果它是一個前台作業,或者它是一個停止的後台作業,它
vimiv
只會SIGHUP
(來自核心)得到一個信號。但兩者都不是:它是一個正在執行的後台作業。或者,如果 bash(特別是 bash,一般來說不是任何 shell)本身收到了一個
SIGHUP
信號,並且已經將它重新發送給它所有非否認的工作。但是在您的範例中,shell 通過 正常退出exit
,而不是因為它是由SIGHUP
$$ 1 $$.
例如,如果我執行
vimiv &
後跟另一個exit
命令,vimiv
將關閉這可能是該
vimiv &
程序的特殊之處——如果我輸入xclock &
然後exit
在終端的單獨行上,xclock
將不會終止。X
但是,如果我從按鈕關閉終端,它將終止,因為在這種情況下bash
會收到一個SIGHUP
信號並將其重新發送到xclock
.$$ 1 $$bash 也可以
SIGHUP
在正常退出時發送 a ,但只有 withshopt -s huponexit
,這不是預設的。