subprocess モジュールを使用して Python からコンソール アプリケーション (Segger の JTAG アプリ) を制御しようとしています。アプリケーションは stdout に対して正しく動作しますが、stdin は読み取られないようです。シェルを有効にすると、入力に入力してアプリケーションを制御できますが、これはプログラムで行う必要があります。同じコードは、cmd.exe などにコマンドを発行する場合に問題なく機能します。
標準入力ではなくキーボードが直接読み取られていると思います。アプリケーション入力を送信する方法はありますか?
from subprocess import Popen, PIPE, STDOUT
jtag = Popen('"C:/Program Files/SEGGER/JLinkARM_V402e/JLink.exe"', shell=True,
universal_newlines=True,
stdin=PIPE,
stdout=PIPE,
stderr=STDOUT)
jtag.stdin.write('usb\n')
jtag.stdin.flush()
print "Stdout:"
while True:
s = jtag.stdout.readline()
if not s:
break
print s,
jtag.terminate()