私は、次の例があります。pythonサブプロセス - PIPEに新しいデータがないかどうかをチェックする方法は?
import subprocess
p = subprocess.Popen("cmd",stdin = subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write(b'cd\\' + b'\r\n')
p.stdin.write(b'dir' + b'\r\n')
p.stdin.write(b'\r\n')
while True:
line = p.stdout.readline()
print(line.decode('ascii'), end='')
if line.rstrip().decode('ascii') == 'C:\>': #I need to check at this point if there is new data in the PIPE
print('End of File')
break
私はサブプロセスからの任意の出力のために、私は読むのをやめたいPIPEてくる新しいデータがない場合、PIPEを聴いています。私はPIPEが空であることを教えてくれるコントロールステートメントを持っていたいと思います。これは、私のプロセスが予期せぬ結果で凍結したり終了したりする場合の問題を避けるのに役立ちます。
あなたは達成しようとしていることについていくつかの文脈を教えてください。あなたに何をしようとしているのか分かっているなら、あなたがやっていることをやり遂げるためのよりよい方法が私にはあるようです。 – mayhewr
ここでの目的は、ターゲットデバイスのシェルを起動することです。サブプロセスを使用して、シェルにコマンドを送信してレスポンスを取得しようとしています。たとえば、ターゲットシェルを起動し、ファイルをターゲットにロードし、ファイルを実行し、出力を観察します。出力が期待どおりの場合は、次のファイルを読み込んでそのファイルを実行してください。しかし、プログラムを実行すると、予期しない値が凍結されたり返されることがあります。この場合、私は凍結を防ぐことができるようにしたい。状況から脱出し、すべてを脱初期化する。 – alkan