프로세스가 "삭제"되었다는 사실은이 프로세스를 생성 한 대화식 쉘에만 의미가 있습니다. 쉘이 작업 테이블에 프로세스를 더 이상 포함하지 않으며 쉘이 종료 될 때 SIGHUP이이 프로세스로 전송되지 않음을 의미합니다. 실제로 귀하의 질문과 관련이 없습니다.
삭제 된 가상 터미널로 전송되는 출력에 대한 정보 : 테스트를 직접 수행 한 결과 /dev/pts/x
장치에 액세스 할 수 없으며 장치를 가리키는 모든 파일 설명자가 닫힐 때까지 다시 할당되지 않습니다. 따라서 삭제 된 터미널에 쓰는 내용이 저장되는 이유를 알 수 없습니다. POSIX에 의해 정의되지 않은 것 같습니다.
터미널에 쓰는 일부 프로세스의 출력을 잡는 것에 대해서는 터미널이 여전히 살아있을 때조차 가능하지 않다 ¹. 터미널에 직접 입력을 가져 오기만하면됩니다 (예 : 키 입력 또는 pty의 마스터 부분에 의한 시뮬레이션 키 입력). 프로세스가 터미널에 쓰여진 내용을 stdin에서 읽으면 대부분의 프로세스에서 자체 io 루프가 발생합니다.
프로세스 종료에 대한 마지막 설명에 대해, 나는 실제로 무슨 일이 일어나고 있는지 모르겠지만 세션이있을 때 프로세스 그룹의 전경 / 백그라운드 상태와 관련된 신호 (SIGTTOU, SIGTTIN, SIGHUP 또는 기타)와 관련하여 다소 이상한 행동을 의심합니다. 리더 종료 (예 : su
언급 한 경우).
편집 에 대한 답변 : 아니오, 출력과 관련하여 프로세스가 제거 될 때 아무런 변화가 없습니다 : 이미 데몬처럼 분리되지 않는 한 여전히 제어 터미널에 연결됩니다. 를 사용하여 볼 수 있습니다 ps
. 그러나이 프로세스에서는 더 이상 셸에서 제공 한 fg
/ bg
/ jobs
명령 을 사용할 수 없습니다 . 즉, 터미널에서 입력을 공급하기가 어려울 수 있습니다 (포 그라운드 프로세스 그룹에 있어야 함).
—
1. 프로세스가 디버깅 도구에 기꺼이 걸리거나 납치되지 않는 한 (위의 주석 참조).