我需要从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假设它的is...reading是小端而不是大端,或者别的什么?我如何编写一个c函数(或者在python中使用技巧)来正确地返回和解释这些数字呢?
发布于 2010-11-06 09:01:53
在Linux documentation on system()中:
...返回状态为wait(2)中指定的格式。因此,该命令的退出代码将是WEXITSTATUS(status) ...
通过wait上的链接,我们可以获得以下信息:
WEXITSTATUS( status ):返回子对象的退出状态。..。仅当WIFEXITED返回true时才应使用此宏。
这意味着您不能直接使用system()的返回值,而必须使用宏来操作它们。而且,由于这符合C标准,而不仅仅是Linux实现,因此您需要对所使用的任何操作环境使用相同的过程。
发布于 2010-11-06 08:57:52
system()调用返回值的格式由waitpid()指定。终止状态与sh实用程序定义的状态不同。我不记得了,但它的工作原理是这样的:
int exit_value, signal_num, dumped_core;
...
exit_value = out >> 8;
signal_num = out & 127;
dumped_core = out & 128;https://stackoverflow.com/questions/4111279
复制相似问题