Hi,
ich hoffe, es kann mir einer helfen.
Ich habe folgendes Problem. Ich baue ein kleines GUI mit Tkinter für ein Commandline-Toole (ja ich weiß, es gibt ein extra Forum dafür, aber hier gehts um das grundlegende Problem).
Ich rufe das Tool + Parameter über "subprocess.Popen" auf. Das funktioniert super und klasse und so weiter, aber eben NUR, solange das Tool keinen Fehler wirft. Es gibt ein Szenario, wo das Tool einfach nicht returnt. Ich muss also auf der Kommandozeile ein "ENTER" drücken, damit es weiter geht.
Den Prozess per Timeout zu killen, ist auch nicht so prickelnd, weil das Tool ansich schon mal eine Weile brauchen kann, um "normale" Anfragen auszuführen. Ein Kill würde mir dadurch einen fehlerfreien Durchlauf versauen.
Mein Problem zusammengefasst:
- Das CLI-Tool returnt nicht immer (liefert also weder STDOUT noch STDERR usw.)
- Wenn das passiert, hängt mein GUI. Ich muss es also abschießen
(ich kann das CLI-Tool zwar per Thread starten, aber spätestens beim Beenden des GUIs hängt sich das auf...)
- Killen per Timeout kommt nicht in Frage
- Schöner Mist
Falls einer eine Idee hat, wäre das klasse!
Danke schon mal für den Aufwand!
Ben
Was tun, wenn das CLI-Tool nicht "returnt"?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Warum? subprocess.Popen funktioniert generell mal asynchron, also wird dein Programm gestartet und dein Programm wartet nicht, bis es fertig ist.Bennhardt hat geschrieben:Ich rufe das Tool + Parameter über "subprocess.Popen" auf. Das funktioniert super und klasse und so weiter, aber eben NUR, solange das Tool keinen Fehler wirft. Es gibt ein Szenario, wo das Tool einfach nicht returnt. Ich muss also auf der Kommandozeile ein "ENTER" drücken, damit es weiter geht.
Davon abgesehen kann man ja versuchen \n an <popenobjekt>.stdin schicken, womit das Enter-drücken dann erledigt wäre.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 15
- Registriert: Donnerstag 9. Februar 2006, 14:21
- Wohnort: Buchholz in der Nordheide
Juhu, das hats getan! Danke - Hätte man auch selber drauf kommen können, aber mit diesen Sachen hatte ich mich eben noch nie auseinander gesetztLeonidas hat geschrieben:Davon abgesehen kann man ja versuchen \n an <popenobjekt>.stdin schicken, womit das Enter-drücken dann erledigt wäre.