Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python错误的subprocess.call返回代码_Python - Fatal编程技术网

python错误的subprocess.call返回代码

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

请看这两个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
我有什么不对劲吗


谢谢

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'])