python中C程序如何获取返回值

2024-04-19 13:06:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个C(在windows上)程序,它有一个返回值的主函数。你知道吗

#include <stdio.h>    
int testData()
{
  int testErr = 0;    
  // ....

  return(testErr);    
}

int main(void) {
  int mainErr = 0;

  mainErr = testData();  
  printf("mainerr = %d", mainErr);

  return mainErr;
}

这个C代码是可执行的myTest.exe文件是通过python运行的。你知道吗

self.run_cmd = "myTest.exe "+cmd           # pass agruments to the C exe

    self.testRun = subprocess.run(self.run_cmd,
                                   stdout=subprocess.PIPE, stdin=None, stderr=subprocess.PIPE,
                                   bufsize=0, universal_newlines=True, timeout=100)
    print(">>>>", self.testRun.stdout)
    print(">>>>", self.testRun.stderr)

使用“print”(“>;>;>;”,self.testRun.stdout)“我在python中没有得到C代码的返回值。 在python中如何获取C main返回的返回值。你知道吗


Tags: rungtselfcmdreturnstdoutexeint
3条回答

使用子进程获得的返回值将是字节。 运行后:

self.testRun = subprocess.run(self.run_cmd, stdout=subprocess.PIPE, stdin=None, stderr=subprocess.PIPE,  bufsize=0, universal_newlines=True, timeout=100)

您可以将输出捕获为:

result = self.testRun.stdout.decode('utf-8')

这个结果是一个字符串,可以进一步使用。你知道吗

^{}函数返回一个^{}对象,该对象具有^{}属性。你知道吗

在python中,subprocess模块监视命令的返回值(即0表示成功,1表示失败)。由于您正在从C程序返回一些值,程序成功退出,返回代码为0。这里可以做的是在C程序中使用exit(1)终止程序,退出代码为1,返回1。 C程序的退出代码可以使用

subproc = subprocess.run(<command to execute>, stdout=subprocess.PIPE, stderr=subprocess.PIPE,)
if (subproc.returncode == 0):
    logger.info('Exited successfully')

另一种方法是在一些文件或数据库中编写所需的输出,然后从python代码中读取。你知道吗

相关问题 更多 >