Python调用C可执行程序(subprocess) 分类: python 服务器搭建 C/C++ shell 2015-04-13 21:03 87人阅读 评论(0) 收藏

时间:2022-06-22 22:35:45

从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如

os.system、os.spawn、os.popen、popen2、commands.

不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息。

subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

subprocess.call()

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

父进程等待子进程完成

返回退出信息(returncode,相当于Linux exit code)

subprocess.check_call()

subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

父进程等待子进程完成

返回0

检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError,该对象包含有returncode属性,可用try…except…来检查

subprocess.check_output()

subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)

父进程等待子进程完成

返回子进程向标准输出的输出结果

检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError,该对象包含有returncode属性和output属性,output属性为标准输出的输出结果,可用try…except…来检查。

举例来说:

import subprocess

result = subprocess.check_output("ls","-al",shell=Fault(默认))

result = subprocess.check_output("ls -al",shell=True)

调用C程序时类似,举个复杂点儿的例子,方便大家举一反三:

result = subprocess.check_output("/home/pi/mjpg/mjpg-streamer -i 'input_uvc.so -d /dev/video0 -r 1920x720' -o 'output_file.so -f /home/pi/data/cam0/ -s 1'",shell=True)

欢迎指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。