小编udi*_*chs的帖子

Python子进程模块不会在segfault上返回stdout

我正在从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
Run Code Online (Sandbox Code Playgroud)

来源a.out是:

int main() {
    printf("hello world\n");
    int x = 1 / 0;
}
Run Code Online (Sandbox Code Playgroud)

输出./a.out是:

hello world
Floating point exception
Run Code Online (Sandbox Code Playgroud)

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

out: ""
err: ""
-8
Run Code Online (Sandbox Code Playgroud)

有没有办法获得可执行文件的输出,即使它崩溃了?

将返回码转换为字符串消息的通用方法也很不错.

python subprocess segmentation-fault

9
推荐指数
1
解决办法
1770
查看次数

标签 统计

python ×1

segmentation-fault ×1

subprocess ×1