Frage

Ich habe zwei Prozesse, A und B. irgendwann erzeugt A B. Nach B erstellt, wenn As Prozess erstellt wurde Baum wird getötet, ich möchte, dass B noch da ist.

Ich benutze createRcess (), um B zu erstellen, und ich kann anscheinend keine Möglichkeit finden, den Prozess zu erstellen, ohne dass es ein Kind ist. Gleiches gilt mit Shellexecuteex (), aber ich fehlt wahrscheinlich eine Flagge.

Weiß jemand, was ich dazu verwenden könnte?

Bearbeiten: Ich habe vergessen zu erwähnen, dass beide Prozesse eine Handlungs- oder Prozess -ID für den anderen benötigen

War es hilfreich?

Lösung

Sie können diesen Prozess einen Erstellungsprozess C ausprobieren, der den Prozess B erstellt und dann C sofort beendet wird (beendet). In einem Prozess B gibt es nur Informationen über den direkten übergeordneten Prozess (Prozess -ID von C, der nicht läuft) und nicht über den Prozess A. "Wenn der Prozess des Prozesses von A also getötet wird" wird der Prozess B wahrscheinlich läuft.

Zum Beispiel starten Sie den Prozess -Explorer (siehe http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) Dann starten Sie den gesamten Commander. Von dem gesamten Kommandanten starten Sie CMD.exe. Von cmd.exe starten Sie notepad.exe. Geben Sie dann "Beenden" in die cmd.exe ein. Nach der Beendigung von CMD.EXE können Sie feststellen, dass Notepad.exe nicht mehr unter dem gesamten Commander (TholtureCMD.EXE) angezeigt wird. Nachdem Sie im Prozess -Explorer "Kill Process Tree" für den gesamten Kommandanten (TotalCMD.exe) gewählt haben, können Sie sehen, dass Notepad.exe weiter läuft.

Andere Tipps

Sie können die Paramaeter dwcreationFlags als detached_process in der Createprocess -API einstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top