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


    从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)

    欢迎指正。

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

  • 相关阅读:
    kis 7.5和360似乎存在兼容性的问题,
    mysql timeout
    update users set a=1 where id in (1,2,3)这句在rails中该如何写呢
    mysql数据库 text类型的长度限制,使用change_column来进行长度的修改并不影响原有数据
    杭州的一个托管idc商
    User.find_each
    ruby 批量更新
    mongodb kt双机房灾备
    imagemagick使用
    kingdee kis
  • 原文地址:https://www.cnblogs.com/paulweihan/p/4660099.html
Copyright © 2020-2023  润新知