Разница между закрытием терминала с помощью кнопки закрытия и 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 

Может ли кто-нибудь объяснить это поведение?

Благодаря!

    Если вы закрываете окно с помощью кнопки закрытия, SIGHUP отправляется в фоновый процесс с помощью оболочки, которая также получает SIGHUP по мере закрытия терминала. Нормальным ответом процессов будет выход, поэтому фоновые задания будут закрыты.

    С другой стороны, если вы нажмете Cntl + D , сигнал не будет отправлен, а EOF (конец файла) будет указан на STDIN, а оболочка (и терминал) будет закрыта. EOF в основном означает, что мы достигли конца STDIN, больше нечего вводить. Поскольку EOF не вызывает никаких ответных действий, связанных с фоновыми заданиями, они будут продолжать продолжаться.