【问题标题】:using subprocess.call to read output of c executable print statement realtime使用 subprocess.call 实时读取 c 可执行打印语句的输出
【发布时间】:2017-03-24 06:42:38
【问题描述】:

我有一个 c 可执行文件,它从 iot 硬件获取数据并使用 printf 在控制台上打印信息。我想从 python 运行这个可执行文件,我可以通过以下方式使用 subprocess.call 来做到这一点

subprocess.call(["demoProgram", "poll"])

并将输出打印到控制台。但是我需要使用我的 python 代码来捕获这个输出(printf)来进一步实时处理信息。如何使用子进程实时捕获此输出?

【问题讨论】:

  • 如果建议的答案之一解决了您的问题,请接受。如果您自己解决了这个问题,如果您能提供答案并将其标记为已接受的解决方案,将会很有帮助。或者,如果您仍有问题,请更新您的问题并提供更多详细信息。

标签: python c subprocess


【解决方案1】:

下面打开一个子进程并从输出中创建一个迭代器。

import subprocess
import sys

proc = subprocess.Popen(['ping','google.com'], stdout=subprocess.PIPE)

for line in iter(proc.stdout.readline, ''):
    print(line)  # process line-by-line

此解决方案已从答案修改为similar question

【讨论】:

    【解决方案2】:

    如果你使用的是 python 2x

    看看命令模块

    import commands
    
    output=commands.getoutput("gcc demoProgram.c") #command to be executed
    print output
    

    对于python3x

    使用子进程模块

    import subprocess
    
    output=subprocess.getoutput("gcc demoProgram.c") #command to be executed
    print output
    

    【讨论】:

    • 我认为它不适用于实时输出。因为我的 c 程序总是在控制台上运行和打印。
    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多