여러 프로세스가 있고 제어 터미널이 없는 세션이 있다고 가정합니다.
세션 리더가 제어 터미널에 대한 연결을 생성하면,
동일한 세션의 다른 프로세스는 세션에 제어 터미널이 있고
어떻게 제어 터미널도 사용할 수 있나요?
제가 이 질문을 드리는 이유는 다음과 같습니다. 일반적으로 프로세스는 setsid()
새 세션을 시작하고 리더가 되기 위해 호출되며 open()
제어 터미널에 연결하기 위해 호출됩니다. 그런 다음 세션 리더는 fork()
파일 설명자를 제어 터미널에 상속하는 하위 프로세스 처리를 진행합니다.
그렇다면 세션에 이미 여러 프로세스가 있지만 제어 터미널이 없는 경우 리더가 제어 터미널에 대한 연결을 생성한 다음 세션의 다른 프로세스에 대한 연결을 생성하는 경우 어떻게 될까요?
감사해요.
답변1
세션 리더가 제어 터미널을 획득한 후 생성된 모든 새로운 하위 프로세스는 해당 제어 터미널도 소유하게 됩니다. 제어 터미널은 상위 터미널에서 상속됩니다.
즉, 기존 어린이는 영향을 받지 않습니다.