我尝试过 subprocess 模块,但为 C 的主要函数提供了字符串值,但它似乎对我不起作用。网络上有一些可用的解决方案,但我很难理解和实现它们。任何帮助将不胜感激。
我想执行一个用 C 编写的文件,并从我的 pyhthon 代码中传递参数,在执行该 C 文件之后,我想捕获它在我的 python 代码中返回的内容。
const char* main(int argc , char* argv[])
{
printf("Hello World from C \n");
printf("1st string passed is %s \n ",argv[1]);
printf("2nd string passed is %s \n ", argv[2]);
char b[] = "success";
return b;
}
这是我希望将字符串返回给 python 代码的 C 代码。
import subprocess
import os
def excuteC():
s = subprocess.call("./Cvishad hello you;", shell = True)
print("status is "+ str(s))
if __name__=="__main__":
excuteC()
这是我在 python 中调用 C 代码的代码。它似乎有效,但我认为它返回一个指针/地址,但不是我想要的实际字符串“成功”。 我得到的输出是这样的 -
Hello World from C
1st string passed is hello
2nd string passed is you
status is 80
我是第一次尝试 C 语言,所以请原谅这些愚蠢的错误。
最佳答案
您的 C 程序返回一个指向字符串的指针作为进程返回值,并且它被截断为无符号字节(例如您看到的 80)。
您可以通过例如在进程之间传输任意数据(我确信我忘记了一些事情)
- 套接字
- 文件
- 流(stdout/stderr;Python 中的
subprocess.check_output()
) - 共享内存
关于python - 如何从 python 执行用 C 编写的文件,同时传递字符串值并接受/存储它作为输出返回的字符串。(Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60274088/