Perché usiamo setsid () durante la demonizzazione di un processo?


18

Per creare un servizio (demone), eseguiamo il fork del genitore e lo facciamo uscire, facendo in modo che il bambino diventi il ​​leader della sessione chiamando setsid(). Inoltre, perché utilizziamo setsid ()? Il nostro processo orfano è gestito da init(anche se non in tutti i casi).

Perché usiamo stsid ()? C'è qualche relazione tra setsid()e SIGHUPsegnale di gestione .

Risposte:


13

Usiamo setsid () perché se uccidiamo il genitore anche il bambino verrà ucciso, setsid ()

crea una nuova sessione se il processo chiamante non è un leader del gruppo di processi. Il processo di chiamata è il leader della nuova sessione, il leader del gruppo di processi del nuovo gruppo di processi e non ha un terminale di controllo.

Il genitore è il primo leader del gruppo di processo, uccidendolo - o uccidendo la sessione / il terminale - uccide il gruppo, motivo per cui cambiamo il leader (e creiamo una nuova sessione mentre ci siamo).


1
È vero ma ha qualche realtion con il segnale SIGHUP mentre lo dico che viene inviato quando si perde il terminale di controllo
Kalu

7
Il genitore riceve un SIGHUP quando il terminale di controllo è chiuso. Il bambino non riceverà un SIGHUP perché è in una nuova sessione.
ZN13
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.