Por que usamos setsid () ao daemonizar um processo?

18

A fim de criar um serviço (daemon), bifurcamos o pai e o fazemos sair enquanto faz com que o filho seja o líder da sessão chamando setsid(). Além disso, por que usamos setsid ()? Nosso processo órfão é tratado pelo processo init(embora nem todos os casos).

Por que usamos stsid ()? Existe alguma relação entre setsid()e SIGHUPsinal de manuseio .

Kalu
fonte

Respostas:

13

Usamos setsid () porque se matarmos o pai, o filho também será morto, o setsid ()

cria uma nova sessão se o processo de chamada não for um líder de grupo de processos. O processo de chamada é 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, matando-o - ou matando a sessão / terminal - mata o grupo, e é por isso que trocamos de líder (e criamos uma nova sessão enquanto estamos nisso).

ZN13
fonte
11
Thst verdade, mas não tem qualquer realtion com sinal SIGHUP como eu kow é send quando o terminal de controle é perdido
Kalu
7
Os pais recebem um SIGHUP quando o terminal de controle está fechado. A criança não receberá um SIGHUP porque está em uma nova sessão.
ZN13 04/11