귀하의 질문에 대한 답변은 이러한 프로세스가 터미널 에뮬레이터에서 하위로 실행되기 때문에 발생합니다. 따라서 터미널 에뮬레이터를 종료하면 모든 자식 프로세스가 종료됩니다 (자녀가 제어 터미널 에뮬레이터와 동일한 프로세스 그룹에서 실행 중이므로).
예를 들어 다음을 참조하십시오.
csb@darwin[~]$ ps fauwx | grep -A6 "xfce4-terminal" | awk '{ for (i = 2; i <= 9; i++) $i="" ; print $0 }'
csb 0:32 xfce4-terminal --geometry=271x65 --display :0.0 --role=Terminal-0x1340050-2606-1351620352 --show-menubar --show-borders --hide-toolbars --working-directory /home/csb --tab --working-directory /home/csb
csb 0:00 \_ gnome-pty-helper
csb 0:00 \_ bash
csb 0:00 |
\_ ssh [redacted]
csb 0:00 \_ bash
csb 0:00 \_ ps fauwx
csb 0:00 \_ grep --color=auto -A6 xfce4-terminal
csb 0:00 \_ awk { for (i = 2; i <= 9; i++) $i="" ; print $0 }
이러한 모든 프로세스는 'xfce4-terminal'프로세스에서 실행되므로 해당 프로세스를 종료하면 프로세스 그룹의 모든 하위 프로세스가 자동으로 종료됩니다. 예를 들어 터미널 에뮬레이터 창을 종료하는 것과 같은 방식입니다. 반드시 SSH 연결을 끊으십시오.
쉘과 같은 프로그램은 일반적으로 관련 하위 프로세스를 그룹에 배치하여 새 프로세스 그룹을 작성합니다. 각 작업은 프로세스 그룹입니다. 커널 외부에서 쉘은 killpg 시스템 호출을 사용하여 작업을 프로세스 그룹에 전송하여 작업을 처리합니다.이 프로세스는 프로세스 그룹의 모든 프로세스에 신호를 전달합니다.