2008-12-28 4 views
27

Ich erstelle untergeordnete Prozesse mit fork() in C/C++.
Wenn der Elternprozess endet (oder aus irgendeinem Grund beendet wird), möchte ich, dass alle untergeordneten Prozesse ebenfalls gelöscht werden.
Wird das automatisch vom System ausgeführt? Oder muss ich es selbst machen?Werden mit gabel() erstellte untergeordnete Prozesse automatisch gelöscht, wenn der übergeordnete Benutzer getötet wird?

Danke.


Vorbestandene ähnliche Fragen:

+0

ich ähnliche Fragen zu sehen, erinnern. Z.B. http://stackoverflow.com/questions/269494/how-can-i-cause-a-child-process-to-exit-when-the-parent-does – PolyThinker

Antwort

32

Nr Wenn die Eltern getötet wird, werden Kinder Kinder des Init-Prozesses (das hat den Prozess ID 1 und wird als erster Benutzerprozess vom Kernel gestartet).

Der init-Prozess überprüft regelmäßig auf neue Kinder und tötet sie, wenn sie beendet wurden (wodurch Ressourcen freigegeben werden, die durch ihren Rückgabewert zugewiesen werden).

Die Frage wurde bereits mit Qualität Antworten hier diskutiert: How to make child process die after parent exits?

+0

Also bedeutet das, dass die Kindprozesse nicht abnormal getötet werden vor der vorzeitigen Beendigung, aber warten Sie, bis sie ihren Code vollständig ausführen und dann beenden? –