Para crear unservicio (demonio)Bifurcamos al padre y lo hacemos salir mientras hacemos que el niño sea el líder de la sesión llamando setsid()
. Además, ¿por qué utilizamos setsid()
? Nuestro proceso huérfano es atendido por init
(aunque no en todos los casos) proceso.
¿Por qué utilizamos setsid()
? ¿Existe alguna relación entre setsid()
el manejo SIGHUP
de la señal?
Respuesta1
Lo usamos setsid()
porque si simplemente matamos al padre, el niño también morirá setsid()
:
crea una nueva sesiónsi el proceso que llama no es un líder de grupo de procesos. El proceso que llama es el líder de la nueva sesión, el líder del grupo de procesos del nuevo grupo de procesos y no tiene terminal de control.
El padre es el primer líder del grupo de procesos, matarlo (o matar la sesión/terminal) mata al grupo, razón por la cual cambiamos el líder (y creamos una nueva sesión mientras estamos en eso).