Linux

為什麼通過exit關閉終端后命令繼續執行?

  • November 2, 2021

為什麼當我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 ,但只有 with shopt -s huponexit,這不是預設的。

引用自:https://unix.stackexchange.com/questions/675747