gpt4 book ai didi

python - 如何从 python 执行用 C 编写的文件,同时传递字符串值并接受/存储它作为输出返回的字符串。(Linux)

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:49 25 4
gpt4 key购买 nike

我尝试过 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/

25 4 0
文章推荐: python - sklearn 管道中特定于列的处理
文章推荐: html - 在其他 div 后面显示
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com