Ich hoffe, dies ist eine einfache Python-Frage.
Wenn ich das Folgende im Python-Interpreter versuche:
>>> import process
>>> def test(cmd):
... p = subprocess.Popen(cmd)
...
>>> test(['ls', '-l'])
Es wird die ls -l
, aber ich muss "Return" drücken, um eine neue >>> Eingabeaufforderung zu erhalten.
Wenn ich jedoch das Folgende versuche:
>>> import process
>>> def test(cmd):
... p = subprocess.Popen(cmd)
... p.wait()
...
>>> test(['ls', '-l'])
Dann wird die ls -l
wird mit einer sofortigen >>>-Eingabeaufforderung ausgeführt.
Eine weitere Variante:
>>> import process
>>> def test(cmd):
... p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
...
>>> test(['ls', '-l'])
Dadurch erhalte ich sofort eine neue Eingabeaufforderung.
Das letzte Beispiel kommt dem, was ich will, am nächsten. Mein Ziel ist es, einen Kindprozess zu starten, auf dessen Beendigung zu warten und dann dessen stdout in meinem Elternprozess zu verwenden, indem ich mich auf p.stdout
während stderr einfach dorthin gedruckt wird, wo es sonst auch gedruckt würde.
Im Moment bleibt die letzte Version in meiner aktuellen Anwendung einfach hängen: p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
mit oder ohne p.wait()
.
Danke,
Charlie