Para criar umserviço (daemon)bifurcamos o pai e fazemos com que ele saia enquanto tornamos o filho o líder da sessão chamando setsid()
. Além disso, por que usamos setsid()
? Nosso processo órfão é cuidado por init
(embora não em todos os casos) processo.
Por que usamos setsid()
? Existe alguma relação entre setsid()
e manipulação SIGHUP
de sinal?
Responder1
Usamos setsid()
porque se apenas matarmos o pai, o filho também será morto, o setsid()
:
cria uma nova sessãose o processo chamador não for um líder de grupo de processos. O processo chamador é o líder da nova sessão, o líder do grupo de processos do novo grupo de processos e não possui terminal de controle.
O pai é o primeiro líder do grupo de processos, matá-lo - ou matar a sessão/terminal - mata o grupo, e é por isso que trocamos o líder (e criamos uma nova sessão enquanto estamos nisso).