[Flug] Forks / Kindproz. beenden

Bernhard R. Link brl at mail.brlink.eu
Sa Sep 8 15:10:58 CEST 2012


* epsi at gmx.de <epsi at gmx.de> [120907 09:55]:
> > Von: "Bernhard R. Link" <brl at mail.brlink.eu>
> > Es empfiehlt sich, das der Elternprozess aufräumt, wenn er geht. Wobei
> > bei Ctrl-C die Frage ist, ob die Kindprozesse das ignorieren sollen und
> > auf das dadurch herforgerufene Signal von Elternprozess warten, oder ob
> > gleich alles selbst zu machen soll. Ersteres macht die Reihenfolge etwas
> > vorhersagbarer, letzteres macht es wahrscheinlicher, dass alles zugeht.
>
> Wenn ich diese Idee verfolgen würde dann müßte
> - der Elternprozess bei CTRL-C ein Signal (welches ?) an die Kinder schicken

Kommt drauf an, was du unterscheiden willst und die genauen Umstände.
Meistens dürfte es eine gute Idee sein, für sauberes runterfahren der
Kinder immer ein SIGTERM zu nehmen.

> - die Kinder ihren Teil der offenen Resourcen freigeben und sich beenden
> - Elternprozess wartet auf die Beendigung der Kinder, gibt seine Resourcen frei und beendet sich
>
> Welche Signal dann am besten an die Kinder senden? Und was wird mit den Ressourcen die ggf vor dem Fork vom Vater angelegt worden sind: nur im Vaterprozess beenden?

Das hängt immer davon ab, was deine "Ressourcen" genau sind. Die meisten
Sachen (offene Dateien, Locks, Sockets, Pipes, ....) werden ja freigegeben,
sobald der letzte Prozess schließt, der sie offen hält.

Bei was anderem kommt es immer darauf an, worum es sich handelt.
Grundsätzlich hat man beim Kindprozess den Vorteil, dass man da genauer
weiß, was man im Kind tut und daher dort besser aufräumen kann,
wohingegen Aufräumen im Elternprozess den Vorteil hat, dass man
gegenüber überraschenden Problemen im Kindprozess besser gefeilt ist
(dafür gegenüber Problemen im Elternprozess weniger).

        Bernhard R. Link



Mehr Informationen über die Mailingliste Flug