2011-01-27 66 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管道。您将不得不创建您自己的批次修改,而不会使用“开始”。