0
私は次のようにコマンドを実行しようとしていますが、タイムアウトが始まるまでtry
ブロック内にSTUCKですが、Pythonスクリプトはそれ自身で独立して実行されます。どのようにこれをデバッグするのですか?サブプロセススクリプトの実行をスクロール
cmd = "python complete.py"
proc = subprocess.Popen(cmd.split(' '),stdout=subprocess.PIPE)
print "Executing %s"%cmd
try:
print "In try" **//Stuck here**
proc.wait(timeout=time_out)
except TimeoutExpired as e:
print e
proc.kill()
with proc.stdout as stdout:
for line in stdout:
print line,
コマンドの詳細にもよりますが、最も一般的な問題は、stdoutに書き込もうとしていることです(ただし、パイプラインのもう一方の端から読み取っていないためできません)。 –
これは、ドキュメントが '.communicate()'を使うことを明確に推奨している理由です。特に、stdoutやstderrをリダイレクトした場合は特にそうです。 –
@Owen、私はこれがその特定の質問の欺瞞であることに同意しません - ここでは 'stdout.read()'と呼ばれていません。もしそうであれば、このバグはありません。 (今、stderrを別のFIFOにリダイレクトしていて、stdoutから読み込むだけであれば、それらはその位置に戻りますが、それは当てはまりません)。 –