python错误的subprocess.call返回代码
请看这两个C语言的简单程序:python错误的subprocess.call返回代码,python,Python,请看这两个C语言的简单程序: #include <stdio.h> int main(int argc, char *argv[]) { return -1; } #include <stdio.h> int main(int argc, char *argv[]) { return 1337; } 我不明白为什么,但python脚本r值包含: 255用于第一个C程序。应该是-1 57为第二个C程序。应该是1337 我有什么不对劲吗 谢谢Pytho
#include <stdio.h>
int main(int argc, char *argv[]) {
return -1;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
return 1337;
}
我不明白为什么,但python脚本r值包含:
- 255用于第一个C程序。应该是-1
- 57为第二个C程序。应该是1337
谢谢Python与此无关。这取决于系统 在Unix/Linux系统上,返回代码存储在1字节上,并且没有签名,因此截断发生在0-255范围之外 因此-1变为255,1337变为57(可以通过应用模数256进行检查) 请注意,在Windows中,返回代码可以大于255(能够通过
100000000
,但仍然不是负值)
结论是:不要过分依赖返回码来传递信息。改为在控制台上打印一些东西
相关:返回代码是一个无符号字节
-1==255个无符号字节
<代码>1337&255=57返回代码范围从0到255/128(取决于系统):1337%256=>57相关:跨站点重复:
>>> import subprocess
>>> r=subprocess.call(['./a.out'])