Warum verwenden wir setsid () beim Dämonisieren eines Prozesses?

18

Um einen Dienst (Daemon) zu erstellen, teilen wir das übergeordnete Element mit und beenden ihn, während das untergeordnete Element durch Aufrufen zum Sitzungsleiter wird setsid(). Außerdem, warum verwenden wir setsid ()? Unser Waisenprozess wird von init(wenn auch nicht in allen Fällen) Prozessen erledigt .

Warum benutzen wir stsid ()? Gibt es eine Beziehung zwischen setsid()und Umgang mit SIGHUPSignal.

Kalu
quelle

Antworten:

13

Wir verwenden setsid (), denn wenn wir nur die Eltern töten, wird auch das Kind getötet, die setsid ().

Erstellt eine neue Sitzung, wenn der aufrufende Prozess kein Prozessgruppenleiter ist. Der aufrufende Prozess ist der Leiter der neuen Sitzung, der Prozessgruppenleiter der neuen Prozessgruppe und hat kein steuerndes Terminal.

Der übergeordnete Prozessgruppenleiter ist der erste, der die Gruppe beendet - oder die Sitzung / das Terminal beendet -, weshalb wir den Leiter wechseln (und eine neue Sitzung erstellen, während wir gerade dabei sind).

ZN13
quelle
1
Das ist wahr, aber hat es irgendeine Beziehung zum SIGHUP-Signal, da es gesendet wird, wenn das steuernde Terminal verloren geht
Kalu
7
Der Elternteil erhält einen SIGHUP, wenn das steuernde Terminal geschlossen wird. Das Kind bekommt keinen SIGHUP, weil es sich in einer neuen Sitzung befindet.
ZN13,