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

标签 python c python-3.x subprocess

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

相关文章:

python - Itertools 置换与 lambda

python - Pymongo 为某些键指定唯一约束

c++ - 确定调用线程正在哪个 CPU 上运行?

c - 在 Linux 中使用 pcap 获取接口(interface)的 IP 地址

Python如何打印列表列表

python - pip freeze 命令输出中的 "pkg-resources==0.0.0"是什么

python - 为什么用透视相机翻转轴?

python - 如何使用 Python 2 和 Python 3 中的内置库 ElementTree 等实体解析 HTML?

Python:电子邮件问题

c - c中的文件处理?