Dlaczego używamy setsid () podczas demonizacji procesu?


18

W celu utworzenia usługi (demona) rozwidlamy rodzica i zmuszamy go do wyjścia, a dziecko jest liderem sesji przez wywołanie setsid(). Ponadto, dlaczego używamy setsid ()? Nasz proces osierocony jest obsługiwany przez init(choć nie we wszystkich przypadkach) proces.

Dlaczego używamy stsid ()? Czy istnieje związek między sygnałem setsid()a obsługą SIGHUPsygnału.

Odpowiedzi:


13

Używamy setsid (), ponieważ jeśli po prostu zabijemy rodzica, dziecko również zostanie zabite, setsid ()

tworzy nową sesję, jeśli proces wywołujący nie jest liderem grupy procesów. Proces wywołujący jest liderem nowej sesji, liderem grupy procesów nowej grupy procesów i nie ma terminala sterującego.

Rodzic jest pierwszym liderem grupy procesów, zabicie go - lub zabicie sesji / terminala - zabija grupę, dlatego zmieniamy lidera (i tworzymy nową sesję, gdy jesteśmy przy nim).


1
To prawda, ale czy ma jakiś związek z sygnałem SIGHUP, ponieważ ja wysyłam go, gdy zaginie terminal kontrolny
Kalu

7
Rodzic otrzymuje SIGHUP, gdy terminal sterujący jest zamknięty. Dziecko nie dostanie SIGHUP, ponieważ jest w nowej sesji.
ZN13,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.