看看这两个用C语言编写的简单程序:
#include <stdio.h>
int main(int argc, char *argv[]) {
return -1;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
return 1337;
}
现在看一下这个非常基本的python脚本:
>>> import subprocess
>>> r=subprocess.call(['./a.out'])
我不明白为什么,但是python脚本r值包含:
我有什么问题吗?
谢谢
答案 0 :(得分:1)
Python与它无关。这取决于系统。
在Unix / Linux系统上,返回码存储在1个字节中,并且未签名,因此截断发生在0-255范围之外。
因此-1变为255,1337变为57(可以通过应用模数256进行检查)。
请注意,在Windows中,返回代码 可以大于255(可以通过join
,但仍不能为负)
结论是:不要过多依赖返回码来传递信息。而是在控制台上打印一些内容。
相关:https://unix.stackexchange.com/questions/37915/why-do-i-get-error-255-when-returning-1