Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: CreateProcess und gestarteten Prozess automatisch beenden wenn Anwendung beendet

  Alt 12. Mär 2014, 09:13
Unter Windows gibt es da (im Gegensatz zu Unix) spontan nichts. Bei CreateProcess gibt es kein einfaches Flag, um so etwas zu erreichen.

Die einzige Lösung die ich kenne sind Jobs. Du kannst in deinem Parent-Prozess einen Job aufmachen, selbst dort als einziger hineinziehen und deine Kindprozesse dann auch dort drinnen aufmachen. Den Job kannst du dann so einstellen dass alle enthaltenen Prozesse terminiert werden wenn das letzte Handle auf den Job geschlossen wird. Da dein Parent der einzige mit einem Handle auf den Job ist, werden alle Kindprozesse terminiert wenn das Parent endet (kontrolliert oder Absturz).

Ich mache das bei mir so, funktioniert auch einwandfrei. Mich würde mal interessieren wie Anwendungen wie der Internet Explorer oder Google Chrome das lösen. Beide waren über ihre Multi-Prozess-Architektur anfangs total stolz und haben viele Blogbeiträge verfasst, vielleicht findet man da ja was.

Delphi bringt auch in der aktuellsten Fassung die Header-Files für die Job-Geschichte noch nicht mit, siehe hier.
Wenn du willst suche ich bei Gelegenheit nochmal alles zusammen was ich mache und stelle es rein.

War jedenfalls schon ein bisschen Arbeit wenn man damit noch nichts gemacht hatte und alle Eventualitäten abdecken will
  Mit Zitat antworten Zitat