Ich verwende das Subprozess Modul, um ein externes Programm (plink.exe) anzumelden, um sich bei einem Server einzuloggen; aber wenn ich call anrufe, um die Ausgabe zu lesen, blockiert es. Der Code ist unten:Python Subprozess communicate() Block
import subprocess
process = subprocess.Popen('plink.exe [email protected] -pw 123456'.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print process.communicate() #block here
Ich weiß, dass der Block ist, weil plink.exe
es noch läuft; aber ich muss die Ausgabe lesen, bevor der Subprozess beendet wird. Gibt es das überhaupt zu tun?
Haben Sie mit Plink interagieren müssen, oder Sie müssen nur den Anruf tätigen und lesen die Std-Ausgabe ohne Blockierung? – Khelben
verwandt: [Python: Lesen Streaming-Eingabe von Subprozess.communicate()] (http://stackoverflow.com/q/2715847/4279) – jfs