나는 프로그램을 썼다. A를 종료하고 다시 시작하는 하위 프로세스(D라고 함)를 생성하는 프로세스(A라고 함)를 시작합니다. 문제는 이제 터미널에서 A를 멋지게 종료할 수 없다는 것입니다(즉, CTRL-C를 누르면 들어갈 수 없습니다). A와 D의 pgid는 동일하지만 터미널이 해당 프로세스 그룹을 포그라운드로 제거한 것처럼 보이므로 지금은 신호를 보낼 수 없습니다. 나는 부모 프로세스가 처음에 죽을 때 이런 일이 발생한다고 생각합니다. 이런 일이 발생하지 않도록 하는 방법이 있나요? 하위 프로세스(D)가 실제로 상위 프로세스이고 터미널이 프로세스 그룹을 삭제하지 않는 것처럼 보이도록 전경 pgid를 변경할 수 있습니까?
답변1
충분히 간단한 솔루션:
프로세스 A가 먼저 두 번째 프로세스 A(A'라고 함)를 실행하도록 합니다. 그런 다음 A를 영원히 차단하십시오. A'는 D를 시작할 수 있고 D는 A'를 다시 시작할 수 있으며 A는 항상 상위로 존재합니다.