バックグラウンドプロセスを開始し、ウィンドウの閉じるボタンを使用して端末を閉じると、バックグラウンドプロセスは終了します。ただし、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 はバックグラウンド操作に関連する応答をトリガーしないため、継続します。