Python 子进程模块不会在段错误上返回标准输出

2023-11-23

我正在从 Python 运行 C 可执行文件,该可执行文件有时会出现段错误。当出现段错误时,子进程模块不会在 stdout 或 stderr 中返回任何内容。

示例代码:

import subprocess

proc = subprocess.Popen(['./a.out'], stdin=subprocess.PIPE,
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
print 'out: "%s"' % out
print 'err: "%s"' % err
print proc.returncode

来源为a.out is:

int main() {
    printf("hello world\n");
    int x = 1 / 0;
}

的输出./a.out is:

hello world
Floating point exception

Python 代码的输出是(在 Linux 中,python 2.7):

out: ""
err: ""
-8

有没有办法即使崩溃也能获取可执行文件的输出?

将返回码转换为字符串消息的通用方法也很好。


应用程序在遇到分段错误之前几乎肯定不会刷新其输出缓冲区。

默认情况下,C stdio 库配置缓冲stdout以便缓冲区在行的每一端都被刷新,但只是stdout是一个 tty。这就是为什么你do运行时查看输出a.out从命令行。

您不能直接让 C 程序从 Python 端更改此设置。但你什么can要做的就是给它一个 tty 以供其使用stdout,即伪tty。打开和设置伪终端的细节比设置常规管道复杂得多,但有一些模块可以帮助您:请参阅Pexpect and 这个问题等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 子进程模块不会在段错误上返回标准输出 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar

随机推荐

  • 如何修复错误:此服务需要项目 ID,但无法确定

    我正在尝试从 AppEngine 将数据插入 Google 数据存储区 但收到错误 java lang IllegalArgumentException A project ID is required for this service b
  • numpy fromiter 与列表生成器

    import numpy as np def gen c c np ones 5 dtype int j 0 t 10 while j lt t c 0 j yield c tolist j 1 What I did res np arra
  • 使用选择查询更新表

    所以我在这里读了一些帖子 但我似乎无法在 MySQL 上运行它 几乎我有一个带有 itemid 的记录 计数 我想根据 itemid 更新到我的 items 表中 items popularity 这是我尝试过的 Update items
  • Bash 中命令替换的变量赋值的退出代码

    我对明确执行变量赋值并使用命令替换时命令将返回什么错误代码感到困惑 a false echo 它输出1 这让我认为变量赋值不会清除最后一个错误代码或产生新的错误代码 但是当我尝试这个时 false a echo 它输出0 显然这就是a 返回
  • 有人使用 Swing 的“swingx”扩展吗? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我在这里看到了 swingx 的提及和提及 但是 每次
  • 图像缩小算法

    您能帮我找到正确的图像调整大小算法吗 我有一个数字的图像 最大尺寸为 200x200 我需要获得尺寸为 15x15 甚至更小的图像 图像是单色的 黑白 结果应该是相同的 这就是关于我的任务的信息 我已经尝试过一种算法 这里是 xscale
  • 为什么我不能在动态 SQL 的 DDL/SCL 语句中使用绑定变量?

    我正在尝试使用绑定变量在动态 SQL 中执行 SQL 命令 this procedure is a part of PL SQL package Test Pkg PROCEDURE Set Nls Calendar calendar IN
  • 在android模拟器中使用麦克风(Java + Android初学者)

    我在这里读到在 Android 模拟器中使用麦克风可能是可能的 所以我决定尝试一下 尽管答案这个问题说这是不可能的 我复制 粘贴了中提供的代码Android 开发者网站并添加了
  • Django循环导入错误

    我是 Django 新手 我刚刚在 windows vista 上为 python 2 5 安装了 v 1 3 1 使用 setup py install 当我启动 python shell 并尝试导入 django db 时 出现以下循环
  • 使用 H264 编解码器将视频保存在 opencv 中

    我在用opencv python 4 5 1 48 and python3 9码头工人 我想以 h264 格式保存视频 这是我保存视频的功能 import cv2 def save video frames fps 30 video pat
  • Scala中的类型类模式不考虑继承?

    在某些情况下 我正在使用类型类设计 API 但是我遇到了隐式解析的问题 如下所示 如果有一个类型为A的隐式对象但有一个类型为B extends A传递给该方法 则无法找到隐式对象 有没有办法做到这一点 或者调用者是否必须将隐式对象放入每个子
  • MKMapView MKCircle 渲染半径太大的圆

    我面临着 MKCircle 外观的奇怪行为 基本上我试图画一个半径为 8500 公里 任意中心的圆 这是我的代码 private func addCircle mapView removeOverlays mapView overlays
  • 我需要在Python中生成1000个唯一的名字

    我需要生成 1000 个唯一的名字并将它们存储在列表中 我正在使用 Python faker 但得到了很多重复的值 import random from random import shuffle from faker import Fak
  • 使用 Jackson 将 Java 对象序列化为 JSON 时抑制包装器对象

    我有一个以 JSON 形式返回列表的 Web 服务 它使用 Jackson 将 Java POJO 列表映射到 JSON 问题是 JSON 表示在数组周围有一个包装对象 而我只想要该数组 即 我得到这个 optionDtoList 当我真正
  • Hadoop JobConf 类已弃用,需要更新示例

    我正在编写 hadoop 程序 我真的不想使用已弃用的类 在网上的任何地方我都找不到更新的程序 org apache hadoop conf 配置 班级 代替 org apache hadoop mapred JobConf class p
  • 无法生成类,因为找不到具有复杂类型的顶级元素

    我正在尝试使用 XSD EXE 工具从 xsd 文件创建一个类 但由于某种原因我收到此错误 警告 无法生成类 因为没有顶级元素 发现复杂类型 我环视了堆栈 发现我可以在复杂类型元素上放置一个类型 但我似乎无法让我工作 这是 xsd 文件
  • 使用应用函子 |@| 进行 Scalaz 验证不工作

    我正在尝试在我的应用程序中使用 Scalaz 7 Validation 但是 我在获取时遇到问题 应用函子来合并我的失败 这是我的代码 type ValidationResult ValidationNel String Unit def
  • 具有连续彩虹色的热图

    首先 我不得不说 我在 stackoverflow 和其他地方读到了很多关于 heatmap 和 ggplot2 的帖子 但我的问题还没有解决 我有以下数据集 Var1 Var2 value 1 197 5 197 5 0 2 192 5
  • 使用 Google OAuth API 检索出生日期

    有谁知道如何通过 Google OAuth api 检索 D O B 我可以通过将范围设置为来获取其他信息 例如姓名 电子邮件 性别https www googleapis com auth userinfo profile 但我无法用这个
  • Python 子进程模块不会在段错误上返回标准输出

    我正在从 Python 运行 C 可执行文件 该可执行文件有时会出现段错误 当出现段错误时 子进程模块不会在 stdout 或 stderr 中返回任何内容 示例代码 import subprocess proc subprocess Po