¿Por qué usamos setsid () al demonizar un proceso?

18

Para crear un servicio (daemon), bifurcamos al padre y hacemos que salga mientras hacemos que el niño sea el líder de la sesión llamando setsid(). Además, ¿por qué utilizamos setsid ()? Nuestro proceso de huérfanos se ocupa del proceso init(aunque no en todos los casos).

¿Por qué usamos stsid ()? ¿Existe alguna relación entre setsid()y la SIGHUPseñal de manejo ?

Kalu
fuente

Respuestas:

13

Usamos setsid () porque si solo matamos al padre, también se matará al niño, el setsid ()

crea una nueva sesión si el proceso de llamada no es un líder de grupo de procesos. El proceso de llamada es el líder de la nueva sesión, el líder del grupo de proceso del nuevo grupo de proceso y no tiene terminal de control.

El padre es el primer líder del grupo de proceso, matarlo, o matar la sesión / terminal, mata al grupo, por lo que cambiamos al líder (y creamos una nueva sesión mientras estamos en él).

ZN13
fuente
1
Esto es cierto, pero ¿tiene alguna idea con la señal SIGHUP ya que sé que se envía cuando se pierde el terminal de control
Kalu
77
El padre obtiene un SIGHUP cuando el terminal de control está cerrado. El niño no recibirá un SIGHUP porque está en una nueva sesión.
ZN13