【发布时间】:2012-05-21 13:36:28
【问题描述】:
我正在从 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的来源是:
int main() {
printf("hello world\n");
int x = 1 / 0;
}
./a.out 的输出为:
hello world
Floating point exception
Python 代码的输出是(在 Linux 中,python 2.7):
out: ""
err: ""
-8
有没有办法在可执行文件崩溃的情况下获取它的输出?
将返回码转换为字符串消息的通用方法也不错。
【问题讨论】:
标签: python segmentation-fault subprocess