我正在从Python的一个C可执行文件和该可执行文件有时会出现segfaults。 当它出现segfaults的子模块没有返回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中,蟒2.7):
out: ""
err: ""
-8
有没有办法让即使它崩溃的可执行文件的输出?
一个通用的方法来翻译返回码为一个字符串消息,也将是不错。