프로세스를 데몬 처리하는 동안 setsid ()를 사용하는 이유는 무엇입니까?


18

서비스 (데몬)를 만들려면을 호출하여 부모를 분기하고 종료하여 자식을 세션 리더로 setsid()만듭니다. 또한 왜 우리는 setsid ()를 사용합니까? 고아 프로세스는 init(모든 경우는 아니지만) 프로세스 에 의해 처리됩니다.

왜 stsid ()를 사용합니까? 신호 setsid()와 처리 SIGHUP신호 사이에 관계가 있습니까?

답변:


13

부모를 죽이면 자식도 죽기 때문에 setsid ()를 사용합니다.

호출 프로세스가 프로세스 그룹 리더가 아닌 경우 새 세션을 작성합니다 . 호출 프로세스는 새 세션의 리더, 새 프로세스 그룹의 프로세스 그룹 리더이며 제어 터미널이 없습니다.

부모는 첫 번째 프로세스 그룹 리더입니다. 그룹을 죽이거나 세션 / 터미널을 죽이면 그룹이 종료됩니다. 따라서 리더를 바꾸고있는 동안 새 세션을 만듭니다.


1
사실이지만 제어 터미널을 잃어 버렸을 때 전송되는 것으로 알려짐에 따라 SIGHUP 신호로 실현됩니다
Kalu

7
제어 터미널이 닫히면 부모는 SIGHUP을 얻습니다. 아이는 새 세션에 있기 때문에 SIGHUP을받지 못합니다.
ZN13
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.