Um eineDienst (Daemon)Wir verzweigen den übergeordneten Prozess und beenden ihn, während wir den untergeordneten Prozess durch Aufruf zum Sitzungsleiter machen setsid()
. Warum verwenden wir überhaupt ? Unser verwaister Prozess wird (wenn auch nicht in allen Fällen) setsid()
von process betreut .init
Warum verwenden wir setsid()
? Gibt es eine Beziehung zwischen setsid()
und der SIGHUP
Signalverarbeitung?
Antwort1
Wir verwenden setsid()
:setsid()
erstellt eine neue Sitzungwenn der aufrufende Prozess kein Prozessgruppenleiter ist. Der aufrufende Prozess ist Leiter der neuen Sitzung, Prozessgruppenleiter der neuen Prozessgruppe und hat kein steuerndes Terminal.
Der übergeordnete Prozess ist der erste Leiter der Gruppe. Wenn dieser oder die Sitzung/das Terminal beendet wird, wird die Gruppe beendet. Deshalb wechseln wir den Leiter (und erstellen dabei eine neue Sitzung).