2011-01-27 4 views
0

私はWindows XPでpython 2.5を使用しています。 サブプロセスを使用してシェルを実行しています。 サブプロセスを使用してシェル内で gdbを実行する必要があります。Popenによって作成されたサブプロセスと対話できません

私のコード:

PID = subprocess.Popen('C:/STM/STxP70_Toolset_2010.2/bin/STxP70.bat', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE). 

今すぐシェル、次回開い 私は

PID.communicate( "GDB")によって通信する使用してGDBを実行しようとした場合、

"GDB" になりますシェル内で実行されていません。

どうすればいいですか?

+0

あなたは何について話していますか? – Falmarri

+0

http://stackoverflow.com/questions/3482869/invoke-and-control-gdb-from-pythonそれはあなたが何をしているかのようです。あなたが何を求めているのかは分かりません。 –

+0

申し訳ありません私は私の質問に変更を加えました。 –

答えて

1

あなたのコード:

  1. 開始STxP70.bat
  2. は、標準入力だと、標準入力を閉じて、それに(無終端の改行付き)、文字列「GDB」を書き込みます。
  3. ファイルの最後まで読み込み中です。 PID.communicateは、サブプロセスとのやりとりをさせません。—は、提供された文字列を書き込んで、すべてを収集し、プロセスが終了するまで出力します。
  4. STxP70.batが完了すると、サブプロセスは終了します。

「シェルが開く」とは、新しいウィンドウにシェルプロンプトが表示された場合、そのシェルが開くということです。それはSTxP70.batが 'start'コマンドでそれを見つめて、あなたのstdin/stdout/stderrパイプを継承していないので、それと通信できないことを意味します。 'start'を使用しないバッチの独自の変更を作成する必要があります。

+0

実際には、gdbをシェルで実行したい、サブプロセスを作成した後に '通信する'ことを試みている。では、どうやってそれをすることができますか?これでも私の.batファイルを変更する必要があります。または、.batファイルを変更することができない他の方法がありますか? –

関連する問題