2011-01-27 35 views
0

我在Windows XP中使用python 2.5。 在這裏,我正在使用子進程來運行我的shell, 現在我該如何運行 gdb在shell中使用子進程。我無法與由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」沒有在shell中運行。

我應該爲此做些什麼。

+0

你在說什麼? – Falmarri 2011-01-27 05:27:53

+0

http://stackoverflow.com/questions/3482869/invoke-and-control-gdb-from-python看起來好像它可能是你以後。很難說出你在問什麼。 – 2011-01-27 05:32:35

回答

1

您的代碼:

  1. 啓動STxP70.bat
  2. 寫入字符串「廣發行」(無終止換行符),以它的標準輸入和關閉標準輸入。
  3. 正在讀取它的輸出直到文件結束。 PID.communicate不會讓您與子進程進行任何進一步的交互—它將提供的字符串寫入,並收集全部輸出,直到進程終止。
  4. 當STxP70.bat完成時,子進程終止。

請注意,如果「shell將打開」意味着一個新的窗口中出現一個shell提示符,你就會被擰緊。這意味着STxP70.bat用'start'命令盯着它,你不能與它通信,因爲它不會繼承你的stdin/stdout/stderr管道。您將不得不創建您自己的批次修改,而不會使用「開始」。