만들기 위해서비스(데몬)를 호출하여 하위 프로세스를 세션 리더로 만드는 동안 상위 프로세스를 분기하고 종료시킵니다 setsid()
. 그리고 우리는 왜 그것을 사용해야 할까요 setsid()
? 우리의 고아 프로세스는 init
(모든 경우는 아니지만) 프로세스에 의해 처리됩니다.
우리는 왜 사용합니까 setsid()
? setsid()
신호 처리와 어떤 관계가 있나요 SIGHUP
?
답변1
setsid()
부모만 죽이면 자식도 죽기 때문에 이것을 사용합니다 . 즉 setsid()
:
새 세션 만들기호출 프로세스가 프로세스 그룹 리더가 아닌 경우. 호출 프로세스는 새 세션 리더이자 새 프로세스 그룹의 프로세스 그룹 리더이며 제어 터미널이 없습니다.
상위 프로세스는 첫 번째 프로세스 그룹 리더입니다. 이를 죽이거나 세션/터미널을 죽이면 그룹이 죽습니다. 이것이 바로 우리가 리더를 바꾸는 이유입니다(그리고 해당 상태에 있는 동안 새 세션을 생성합니다).