从Python调用另一个进程/子进程需要访问Shell
我正在用 Popen
从 Python 调用一个 C/C++ 程序,Python 代码需要观察这个子进程的行为,并收集一些数据来做自己的工作。
问题是,C 代码已经在使用管道来调用一些 shell 命令,所以在我从 Python 执行后,C 程序就无法再执行 bash shell 命令了。
有没有办法在用 Popen
调用时,指定子进程可以在 shell 中执行它自己的管道命令呢?
我试过设置 shell=True,但没有用!
2 个回答
0
最好的方法可能是使用一个TCP连接到本地计算机。如果你使用的是*类Unix系统,你可以通过打开一个临时文件,然后从主程序中定期检查这个文件来实现。
2
根据你的描述,听起来你是在用Popen来执行一个命令行,而这个Popen又调用了一个shell。
其实你应该让Popen直接调用你的程序,像这样:
from subprocess import Popen,PIPE
p = Popen(['/my/fancy/program','-myarg1','-myarg2'],stdout=PIPE)
from_process = p.communicate()[1]