首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python错误的subprocess.call返回代码

python错误的subprocess.call返回代码
EN

Stack Overflow用户
提问于 2018-07-23 03:44:13
回答 1查看 230关注 0票数 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\f25 C-1程序应为-1\f25
  • 57-1\f6。应该是1337

我做错什么了吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51468692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档