
なぜcommand & exit
ターミナルで(のようにvimiv & exit
)ヴィミヴターミナルが閉じられても実行し続ける?私は予想していたヴィミヴ現在の端末でバックグラウンドジョブとして開始し、その後サインアップターミナルが閉じられ、終了するとき。たとえば、vimiv &
別のexit
コマンドを実行すると、ヴィミヴ閉店します
答え1
私は、vimiv が現在のターミナルでバックグラウンド ジョブとして開始され、ターミナルが閉じられて終了するときに sighup を受信することを期待していました。
いいえ、そうではありません。カーネルからシグナルをvimiv
受け取るのは、SIGHUP
前景仕事だったとしても、停止バックグラウンド ジョブ。ただし、どちらでもありません。実行中のバックグラウンド ジョブです。
または、bash (特定の bash であり、一般的なシェルではありません) 自体がシグナルを受信し、それをすべての非拒否ジョブに再送信した場合。ただし、あなたの例では、シェルは[1]によってSIGHUP
シグナルがexit
送信されたからではなく、を介して正常に終了します。SIGHUP
例えば、
vimiv &
別のexit
コマンドを実行すると、vimiv
閉じます
vimiv &
これはそのプログラムに特有のことかもしれません。ターミナルの別の行にxclock &
と を入力しても、は終了しません。ただし、 ボタンでターミナルを閉じると、 は終了します。その場合、は信号を受信し、 に再送信するからです。exit
xclock
X
bash
SIGHUP
xclock
[1] bash はSIGHUP
正常終了時に を送信することもできますが、 の場合のみでありshopt -s huponexit
、これはデフォルトではありません。