我需要从C调用一个python脚本,并能够从中捕获返回值。它的值并不特别重要,它们可能也是一个枚举,但是我从测试用例中获得的价值让我困惑不已,而且我想要深入了解我所看到的。c系统()从python脚本返回 - 令人困惑!
所以,这里是C:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int out = 0;
out = system("python /1.py");
printf("script 1 returned %d\n", out);
return 0;
}
这里是/1.py
:
import sys
sys.exit(1)
这些程序的输出是这样的:
script 1 returned 256
一些其他值:
2 -> 512
800 -> 8192
8073784 -> 14336
假设它是...阅读而不是大的endian,或什么?我怎么能写一个c函数(或伎俩python中)正确返回和解释数字?
C99§7.20.4.6.3:“如果参数是一个空指针,那么只有当命令处理器可用时,'system'函数才返回非零值;如果参数不是空指针,'system'函数返回,它返回一个实现定义的值。“ – 2010-11-06 01:23:26
@Adam,@Hasturkun,感谢您的纠正。 – 2010-11-06 13:55:51
我不知道为什么system()手册页不只是说“你可以通过调用'WEXISTSTATUS(system(”command“));'”来访问返回值,但我确定有一个很好的理由。感谢澄清:) – tehwalrus 2010-11-07 13:02:26