看看这两个用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值包含:
用于第一个C程序的
我做错什么了吗?
谢谢
发布于 2018-07-23 03:55:30
Python与此无关。这是系统相关的。
在Unix/Linux系统上,返回代码存储在1字节中,并且是无符号的,因此截断发生在0-255范围之外。
So -1变成255,1337变成57 (可以通过应用模数256来检查)。
请注意,在Windows中,返回代码可以高于255 (能够通过100000000
,但仍然不是负数)
结论是:不要过于依赖返回代码来传递信息。改为在控制台上打印一些内容。
相关:https://unix.stackexchange.com/questions/37915/why-do-i-get-error-255-when-returning-1
https://stackoverflow.com/questions/51468692
复制相似问题