我正在使用Popen
从python调用C / C ++程序,python代码应该观察子进程的行为并为自己的工作收集一些数据。
问题是C代码已经使用管道来调用一些shell命令 - 所以在我从python执行后,C程序无法执行bash shell命令。
有没有办法从Popen
调用指定,子进程应该在shell中执行自己的管道命令???
我尝试使用shell = True,但没有帮助!
答案 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,则可以通过打开临时文件并从主机应用程序中轮询它来实现。