前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 从subprocess运行的子进程中实时获取输出

python 从subprocess运行的子进程中实时获取输出

作者头像
多凡
发布2020-02-11 15:06:17
9.9K0
发布2020-02-11 15:06:17
举报
文章被收录于专栏:sringbootsringboot

起因是这样的,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做的就是用python 获取c++程序的printf() 或cout 的输出;

环境linux python 3.8.x

以下代码实现,获取子程序输出

command='./ll.out'
p=subprocess.Popen(command, shell=False, stdout=subprocess.PIPE,stderr=subprocess.STDOUT) # 使用管道

while p.poll() is None:
    line=p.stdout.readline().decode("utf8")
    print(line)

shell =false 意思是command 使用的不是linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息。 p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行.

参考文章1 python中的subprocess.Popen()使用

参考文章 2 python 从subprocess运行的子进程中实时获取输出

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档