
내가 command & exit
터미널에서 할 때 왜 (예를 들어 vimiv & exit
)비미브터미널이 닫혀도 계속 실행되나요? 기대했다비미브현재 터미널에서 백그라운드 작업으로 시작한 다음한숨터미널이 닫히고 나갈 때. 예를 들어, 다른 명령을 실행 vimiv &
한 후에 실행하면exit
비미브문을 닫을 것이다
답변1
나는 vimiv가 현재 터미널에서 백그라운드 작업으로 시작된 다음 터미널이 닫히고 종료될 때 한숨을 받을 것으로 예상했습니다.
아니요, 그런 일은 일어나지 않습니다. 그것이 다음과 같은 경우에만 (커널로부터) 신호를 vimiv
받습니다.SIGHUP
전경직업이든, 아니면중지됨백그라운드 작업. 하지만 둘 다 아닙니다. 실행 중인 백그라운드 작업입니다.
또는 bash(특히 bash, 일반적으로 쉘이 아님)가 신호를 수신하여 SIGHUP
소유되지 않은 모든 작업에 다시 보낸 경우입니다. 그러나 귀하의 예에서 쉘은 [1] exit
에 의해 신호를 받았기 때문에가 아니라 를 통해 정상적으로 종료됩니다.SIGHUP
예를 들어, 다른 명령을 실행
vimiv &
한 후에 실행하면 닫힙니다 .exit
vimiv
이는 해당 프로그램에 특별한 것일 수 있습니다 . 터미널에 별도의 줄을 vimiv &
입력하면 xclock &
종료 되지 않습니다. 그러나 버튼에서 터미널을 닫으면 종료됩니다 . 이 경우 신호를 수신 하고 에 다시 보내기 때문입니다 .exit
xclock
X
bash
SIGHUP
xclock
[1] bash는 정상적으로 종료할 때 a를 보낼 수도 있지만 이는 기본값이 아닌 SIGHUP
로만 가능합니다 .shopt -s huponexit