← 질문 목록
#42깊이 0

데몬 프로세스는 왜 세션 리더로 지정되지 않는가?

운영체제깊이

세션 리더만 제어 터미널을 획득할 수 있어서다. 더블 포크의 최종 데몬은 리더가 아니라 새 제어 터미널을 얻을 수 없고, 그래서 터미널 쪽 신호와 엮이지 않는다.

실행 형태터미널 관계
터미널 세션사용자 로그인, 쉘로 제어
데몬 프로세스세션 리더가 아니며, 제어 터미널 없음

터미널이 끊기면 SIGHUP은 원인에 따라 세션 리더나 전면 프로세스 그룹에 간다. 로그아웃할 때 셸이 자기 작업들에 SIGHUP을 보내기도 한다. 전통적인 방식은 새 세션을 만든 뒤 다시 fork해 세션 리더가 아닌 자식으로 남는다.

systemd가 띄우는 요즘 데몬은 이 절차를 밟지 않는다.

첫 자식이 setsid()를 부르면 새 세션의 리더이자 새 프로세스 그룹의 리더가 되면서 제어 터미널이 떨어진다. 여기서 한 번 더 fork하면 최종 데몬은 리더가 아니라 터미널을 다시 획득할 수 없다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

데몬 프로세스는 왜 세션 리더로 지정되지 않는가?