프로세스를 데몬화할 때 왜 setid()를 사용합니까?

프로세스를 데몬화할 때 왜 setid()를 사용합니까?

만들기 위해서비스(데몬)를 호출하여 하위 프로세스를 세션 리더로 만드는 동안 상위 프로세스를 분기하고 종료시킵니다 setsid(). 그리고 우리는 왜 그것을 사용해야 할까요 setsid()? 우리의 고아 프로세스는 init(모든 경우는 아니지만) 프로세스에 의해 처리됩니다.

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

답변1

setsid()부모만 죽이면 자식도 죽기 때문에 이것을 사용합니다 . 즉 setsid():

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

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

관련 정보