프로세스를 데몬화하는 동안 왜 setid()를 사용합니까?

프로세스를 데몬화하는 동안 왜 setid()를 사용합니까?

만들기 위해서는서비스(데몬)를 호출하여 하위를 세션 리더로 만드는 동안 부모를 포크하고 종료하도록 만듭니다 setsid(). 게다가 왜 우리는 을 사용합니까 setsid()? 우리의 고아 프로세스는 init(모든 경우는 아니지만) 프로세스 에 의해 처리됩니다 .

우리는 왜 사용합니까 setsid()? setsid()와 처리 SIGHUP신호 사이에 어떤 관계가 있습니까 ?.

답변1

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

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

부모는 첫 번째 프로세스 그룹 리더이며, 이를 죽이거나 세션/터미널을 죽이면 그룹이 죽습니다. 이것이 바로 우리가 리더를 바꾸는 이유입니다(그리고 그 동안 새 세션을 생성합니다).

관련 정보