【问题标题】:Get a return value from C++ program to a Python script using subprocess使用子进程从 C++ 程序获取返回值到 Python 脚本
【发布时间】:2020-04-16 06:46:30
【问题描述】:

我在 Python 脚本中使用 subprocess.Popen() 来运行 C++ 程序的可执行文件。我需要从 C++ 程序中返回一个可以在 Python 脚本中使用的值。

我在 C++ 程序中有很多 printf 语句,所以我不能使用 PIPE 来获取输出。

我可以返回脚本接收到的单个值吗?

【问题讨论】:

    标签: python c++ subprocess return-value


    【解决方案1】:

    检查Popen返回的对象的returncode属性。

    请注意,仅当您首先在 Popen 对象上调用了 poll()wait() 时才会填充它。

    【讨论】:

    • 如果我使用 Popen 的返回代码,它会给我退出代码 0,因为可执行文件(cpp 文件)运行良好。但是我想根据我可以在脚本中接收到的内容在 cpp 文件中返回不同的内容。
    • @ShivamKumar 为什么不能返回与0 不同的内容?如果您不想更改退出代码,您可以使用stderr 而不是stdout。否则,您可以使用任何进程间通信方式,例如管道。
    【解决方案2】:

    这个问题解决了。基本上python脚本子进程可以接收退出代码。 cpp 文件可以从 int main() 返回该代码,该代码可用作 python 脚本中 prog 的退出代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 2013-08-22
      • 2021-07-18
      • 2015-01-21
      • 2018-08-07
      • 2015-01-02
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多