Seite 1 von 1

Unabhängigen Prozess starten

Verfasst: Donnerstag 31. Juli 2008, 10:07
von bughunter
Hallo,

ich habe folgende Situation, mein Programm wird folgendermassen gestartet:

Dos-Batch --> Exe 1--> (Exe 2->Python)

Dos-Batch ist meine Batch-Datei die gestartet wird (cmd)
Exe n ist ein Programm was von der Kommandozeile gestartet wird

Jetzt möchte ich im Python, das sich das Programm sich selbst neustartet, es geht darum eine andere Version von sich selbst hochzufahren.
Die Konfiguration wird in der Dos-Batch vorbereitet und mit Hilfe von Exe 1
weiterverarbeitet (zwingende Vorstufe einer anderen Anwendung)

Das Problem:
Wenn ich per os.system("start Dos-Batch") die Anwendung erneut starte, wartet die erste Dos-Batch auf das Ende des neuen Prozesses obwohl sich Exe 2 mit Python beendet!!!

Die Prozessliste im Taskmanager unter Windows zeigt dann:
cmd.exe
Exe 1
...
cmd.exe
Exe 1
usw.

Edit:
Ich habe es jetzt geschafft das sich die Dos-Batch beendet es ist wohl Exe 1 die hier auf das Ende der Prozesse wartet. Irgendwie muss es eine Verbindung geben ... wenn ich den letzten Prozess beende schließen sich alle Instanzen von Exe 1 eine nach dem anderen. Es ist als ob os.system("start Dos-Batch") wie ein Kindprozess behandelt wird und sich "main" deswegen nicht beendet.

Edit 2: Ich glaube ich habs os.system("start batchdatei.cmd") startet eine shell und diese wartet auf das Ende meines Befehls ... wie muss ich dann den Befehl absetzen??

Wie kann ich das nur abkoppeln ...?

Danke im Voraus.

Viele Grüße
bughunter

Verfasst: Donnerstag 31. Juli 2008, 11:14
von lunar
"subprocess.Popen" nutzen, und zwar bitte ohne "shell=True". Die Existenz von "os.system" vergisst du am besten ganz schnell wieder ...

Verfasst: Donnerstag 31. Juli 2008, 11:24
von bughunter
funktioniert noch nicht ganz, wie gesagt die Dos-Batch schließt sich aber Exe 1 bleibt offen und die Instanzen werden immer mehr* auch mit Popen() ohne die Shell

*ich habe mal eine Endlosschleife gebastelt welche dann immer das CMD-File startet

Gruß
bughunter

Verfasst: Donnerstag 31. Juli 2008, 11:36
von lunar
bughunter hat geschrieben:funktioniert noch nicht ganz, wie gesagt die Dos-Batch schließt sich aber Exe 1 bleibt offen und die Instanzen werden immer mehr* auch mit Popen() ohne die Shell
Das hat nichts mehr mit Python zu tun. Wenn die Exe-Datei auf das Beenden des Python-Unterprozesses wartet, kann Python da ziemlich wenig gegen tun.