我在Python中测试子进程选项。我在C中编写了简单的代码,我希望在Python中通过子进程运行它。这是它的外观:
C代码example.c(首先我执行代码然后在子进程中使用可执行文件):
#include <stdio.h>
int main(int argc, char *argv[]) {
int number= 2110;
while (1==1)
{
printf("%d",number);
printf(" return number: ")
return number;
}
return 0;
}
Python代码:
def subTest():
while True:
numberS = subprocess.call('./example')
print (numberS)
运行python代码后我应该有的输出:
2110 return number: 2110
我得到的输出:
2110 return number: 62
我在一些&#39;数字上测试它?和正确的值我得到255然后256 - &gt; 0等等为什么?为什么它提供8位值以及如何返回正确的值?
答案 0 :(得分:3)
这不是Python的问题,但实际上是Linux的一个功能。 Looking at this answer:
目前,大多数基于Unix的系统仅支持8位返回值。 Windows支持(至少)32位返回值。
所以,假设您使用的是Unix,那么即使您拥有int main()
,返回值也会被限制在0到255之间。同样来自链接的问题:
int main(void){
return 256;
}
echo $? ; # out 0
您必须找到另一种方法来返回值 - 也许打印出来? This answer shows how to do it:
run = subprocess.Popen('./example', stdout = subprocess.PIPE,
stderr = subprocess.PIPE, env={'LANG':'C++'})
data, error = run.communicate()
numberS = int(data)