0
「subprocess.Popen.stdin.write」コマンドが失敗するように見えるのはなぜですか?subprocess.Popen.stdinへの書き込みが正しく実行されない
#!/usr/bin/env python3
# coding=utf-8
import os
import subprocess
bash = subprocess.Popen(['bash'],
stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
(シェル= TRUE:参照エディット2)
bash.stdin.write(b'echo foo\n')
print(bash.stdout.readline())
bash.stdin.write(b'echo bar\n')
print(bash.stdout.readline())
編集:最初のsubprocess.Popen.stdout.readline(のITブロック)、おそらくsubprocess.Popenには行が存在しないので、 .stdout。
編集2:これは依然としてハングします。
あなたが任意のエラーメッセージが表示されますか?それは何をし、それは何をすべきか? – Adam
それはそれを行うことはありません。 bashにはいくつかの実行モードがあり、探しているのはシェルモードです。あなたは 'Popen'呼んでいますが、セキュリティホールを作成する際に何を行うことができますことは、'シェル= true'を行うことです。 https://docs.python.org/2/library/subprocess.html – HuStmpHrrr
あなたがbashの操作を行い、何が起こるか:あなたは、ドキュメントをチェックする必要がありますか?どうやらそれは私のために働いて見えます、それはシェルモードで起動したときに、あなたのbashはこれらのいくつかを印刷するので、それはこのようなものです。これに対するもう一つの解決策は 'ptty'です。もっと正確ですがもっと複雑です。あなたが正しいことをしたいのであれば、それもチェックしたいでしょう。 – HuStmpHrrr