gpt4 book ai didi

python 错误的 subprocess.call 返回码

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:52 31 4
gpt4 key购买 nike

看看这 2 个简单的 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 程序为 255。应该是-1
  • 第二个 C 程序为 57。应该是1337

我有什么问题吗?

谢谢

最佳答案

Python 与它无关。这取决于系统。

在 Unix/Linux 系统上,返回码存储在 1 个字节上,并且是无符号的,因此截断发生在 0-255 范围之外。

所以 -1 变成 255,1337 变成 57(可以通过应用模数 256 来检查)。

请注意,在 Windows 中,返回码可以高于 255(能够超过 100000000,但仍然不是负数)

结论是:不要过分依赖返回码来传递信息。而是在控制台上打印一些东西。

相关:https://unix.stackexchange.com/questions/37915/why-do-i-get-error-255-when-returning-1

关于python 错误的 subprocess.call 返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51468692/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com