2008-12-28 15 views
27

Tworzę procesy potomne z fork() w C/C++.
Kiedy proces nadrzędny się zakończy (lub zostanie zabity z jakiegoś powodu), chcę, aby wszystkie procesy potomne również zostały zabite.
Czy dzieje się to automatycznie w systemie? Czy muszę to zrobić sam?Czy procesy potomne zostały utworzone przy użyciu fork() automatycznie zabijanego, gdy rodzic został zabity?

Dzięki.


istniejące wcześniej podobne pytania:

+0

Pamiętam podobne pytania. Na przykład. http://stackoverflow.com/questions/269494/how-can-i-cause-a-child-process-to-exit-when-the-parent-does – PolyThinker

Odpowiedz

32

nr Jeżeli rodzic zostaje zabity, dzieci stają się dziećmi procesu init (który ma proces id 1 i jest uruchamiany jako pierwszy proces użytkownika przez jądro).

Proces init okresowo sprawdza nowe dzieci i zabija je, jeśli zostały zakończone (w ten sposób zwalniając zasoby przydzielane przez ich wartość zwracaną).

Pytanie zostało już omówione z jakości odpowiedzi tutaj: How to make child process die after parent exits?

+0

Czyli to oznacza, że ​​procesy potomne nie są nieprawidłowo zabijane przed przedwczesnym zakończeniem, ale czekać na pełne wykonanie kodu, a następnie zakończyć? –

Powiązane problemy