专栏首页sringbootpython 从subprocess运行的子进程中实时获取输出

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

起因是这样的,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运行的子进程中实时获取输出

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 搞懂Spring提供的事务管理接口PlatformTransactionManager

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • SpringMVC 入门跳转小案例

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • Spring Bean测试环境搭建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • ceph 的crush算法 straw

    很多年以前,Sage 在写CRUSH的原始算法的时候,写了不同的Bucket类型,可以选择不同的伪随机选择算法,大部分的模型是基于RJ Honicky写的RUS...

    用户2772802
  • 代码提示插件Spket

    Spket是一个可以在Eclipse及MyEclipse中实现JavaScript代码自动提示、自动校验、自动纠错的插件。

    wblearn
  • 一步一步走向锥规划 - LS

    一般来说凸优化(Convex Optimization, CO)中最一般的是锥规划 (Cone Programming, CP) 问题, 最简单的是最小二乘(...

    史博
  • unity中自定义鼠标样式

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    bering
  • DeepMind成员、谷歌资深员工:神经网络序列学习突破及发展(附报告下载)

    【新智元导读】谷歌CEO在给投资人的信中写道谷歌搜索将更具有情景意识,其关键技术自然是深度学习。本文中,谷歌资深员工、DeepMind 成员 Oriol Vin...

    新智元
  • .NET Core 如何禁止.resx文件自动生成Designer.cs

    在 Visual Studio 中,如果我们在一个 .NET Core 工程里加入了一个资源文件(.resx),那么你会发现有个对应的 .Designer.cs...

    Edi Wang
  • 玩转SSH端口转发

    SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转...

    Fundebug

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动