닫기 버튼을 사용한 터미널 닫기와 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는 백그라운드 작업과 관련된 응답을 트리거하지 않으므로 계속 진행됩니다.

관련 정보