閉じるボタンを使用した端末の閉じるとCtrl-Dの違い

閉じるボタンを使用した端末の閉じるとCtrl-Dの違い

バックグラウンドプロセスを開始し、ウィンドウの閉じるボタンを使用して端末を閉じると、バックグラウンドプロセスは終了します。ただし、Ctrl+を使用して端末を閉じると、Dバックグラウンドプロセスは引き続き実行されます。

sam@Sam-Pc:~$ yes > /dev/null &
[1] 10219
// I then close the terminal a reopen a new one
sam@Sam-Pc:~$ ps aux | grep yes 
sam      10295  0.0  0.0  15948  2152 pts/8    S+   00:54   0:00 grep --color=auto yes

これでCtrl+を使ってD端末を閉じます。

sam@Sam-Pc:~$ yes > /dev/null &
[1] 10299
sam@Sam-Pc:~$Ctrl-D
// I then reopen a new terminal
sam@Sam-Pc:~$ ps aux | grep yes 
sam      10219 99.4  0.0  11404   812 ?        R    00:52   2:01 yes
sam      10295  0.0  0.0  15948  2152 pts/8    S+   00:54   0:00 grep --color=auto yes

誰でもこの動作を説明できますか?

ありがとうございます!

ベストアンサー1

閉じるボタンを使用してウィンドウを閉じると、シェルはSIGHUPをバックグラウンドプロセスに送信し、端末が閉じるとシェルもSIGHUPを受け取ります。プロセスに対する一般的な応答は終了であるため、バックグラウンド操作は終了します。

一方、Cntl+を押すとD信号は送信されませんが、STDINにEOF(ファイルの終わり)が表示され、シェル(および端末)が閉じます。 EOFは、デフォルトではSTDINが終了し、入力する内容がなくなったことを意味します。 EOF はバックグラウンド操作に関連する応答をトリガーしないため、継続します。

おすすめ記事