【发布时间】:2016-12-11 11:12:45
【问题描述】:
我正在尝试执行产生错误的可执行二进制文件。我使用 Popen 执行二进制的代码:
p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
output, error = p.communicate()
return_code = p.returncode
if error:
raise SomeLocallyDefinedError
这应该在脚本执行导致错误时引发错误。在这种特殊情况下,cmd 是相关可执行二进制文件的路径。
现在,当我在终端 ./binary_file 上执行这个二进制文件时,它会给我一个错误消息
“浮点异常:8”。
但是当脚本被 Popen 执行时,没有错误,也没有输出。但是返回码是-8。我相信非零返回码意味着错误,如果是这样,为什么 Popen.communicate() 没有捕获消息?
如果你们想知道什么是可执行二进制文件。二进制文件是通过编译导致运行时错误的 c 文件生成的。这是c文件的内容
# include<stdio.h>
int main(){
int a = 18;
int b = 0;
int c = a/b;
printf("%d", c);
}
【问题讨论】:
标签: python subprocess popen