从python / child进程调用另一个进程需要访问shell

时间:2010-04-21 13:53:45

标签: c++ python c unix subprocess

我正在使用Popen从python调用C / C ++程序,python代码应该观察子进程的行为并为自己的工作收集一些数据。

问题是C代码已经使用管道来调用一些shell命令 - 所以在我从python执行后,C程序无法执行bash shell命令。

有没有办法从Popen调用指定,子进程应该在shell中执行自己的管道命令???

我尝试使用shell = True,但没有帮助!

2 个答案:

答案 0 :(得分:2)

从您的描述中,您似乎正在使用Popen来执行命令行,该命令行将Popen称为shell。

你应该让Popen直接调用你的程序,如下所示:

from subprocess import Popen,PIPE
p = Popen(['/my/fancy/program','-myarg1','-myarg2'],stdout=PIPE)
from_process = p.communicate()[1]

答案 1 :(得分:0)

最好的方法是使用到localhost的TCP连接。如果您使用的是* nix,则可以通过打开临时文件并从主机应用程序中轮询它来实现。