2012-07-10 108 views
1

如何指定python模块子进程用来执行命令的目录?我想要运行一个C程序,并以近乎实时的方式在Python中处理它的输出。Python子进程模块使用

我想EXCUTE命令(运行我的makefile我的C程序:

make run_pci 

在:

/home/ecorbett/hello_world_pthread 

我也想处理从Python的C程序的输出。我是Python的新手,所以示例代码将不胜感激!

谢谢, Edward

回答

2

使用cwd的参数Popen,call,check_callcheck_output。例如。

subprocess.check_output(["make", "run_pci"], 
         cwd="/home/ecorbett/hello_world_pthread") 

编辑:OK,现在我明白你的 “近实时” 的意思。尝试

p = subprocess.Popen(["make", "run_pci"], 
        stdout=subprocess.PIPE, 
        cwd="/home/ecorbett/hello_world_pthread") 
for ln in p.stdout: 
    # do processing 
+0

谢谢!现在我将如何捕获c程序的输出?它只是打印多行文字? – 2012-07-10 18:44:27

+0

check_output如何工作? – 2012-07-10 18:47:45

+1

如果您阅读文档,您将看到check_output返回命令的输出。 http://docs.python.org/library/subprocess.html#subprocess.check_output – Acorn 2012-07-10 18:53:49

0

阅读the documentation。您可以使用cwd参数指定它,否则它使用父级的当前目录(即运行子进程的脚本)。

相关问题