从 C++ 程序运行 python 程序?

Posted

技术标签:

【中文标题】从 C++ 程序运行 python 程序?【英文标题】:Running a python program from a C++ program? 【发布时间】:2014-09-22 05:08:14 【问题描述】:

我一直在 python 中使用 Selenium,我真的希望有一个现有的 C++ 程序来运行我的 python 代码。

基本上,我的 python 代码只是找到一个网站,然后下载文件,然后我的 C++ 程序想要打开该文件并对其进行一系列操作。如果我有一个 myPythonCode.py 文件和其他 C++ 文件(header.h、main.cpp、otherFunctions.cpp...),我将如何从我的 C++ 程序运行 python 代码?

另外,我的两个程序都是控制台程序,我希望用户在运行程序时会有不间断的体验(例如,如果用户想在运行 C++ 程序时下载文件,那么终端没有关闭,或打开不同的窗口来启动 python 程序)。对此的任何帮助将不胜感激!

【问题讨论】:

在哪个操作系统上?顺便说一句,我觉得你的问题在 *** 上是题外话(因为你没有显示任何源代码) @BasileStarynkevitch 我在 Windows 7 上运行,我有几个朋友告诉我研究 std::system for C++ 基本上让我的 C++ 程序运行 python 代码,并且完成后,将控制权交还给我的 C++ 程序(虽然我的朋友只使用 C#,但他告诉我 C++ 应该不会太远)。另外我不确定要包含哪些源代码!我的代码有效(是否证明错误是另一回事:P)但我总是来 *** 寻求比我更有才华的人的帮助。 如果您是学生,学习和使用 Linux 以及深入了解免费软件会教给您很多东西。 @BasileStarynkevitch 是的,我的功课往往在 Ubuntu 上完成,但是我正在修补的这个程序基本上是我从小就一直在研究的东西,最近才回来进入。到目前为止,我的大部分学习都不是基于软件的,所以我认为现在是开始复习我的编程的好时机...... 【参考方案1】:

它是特定于操作系统的,C++11 标准没有为此定义任何函数(除了 system(3),它在 C99 中,std::system 在 C++11 中)。在 Linux(和其他POSIX 系统)上,阅读Advanced Linux Programming 并考虑使用system 或popen(3),或者更可能使用较低级别的syscalls(2),例如fork(2)、execve(2)、pipe(2), dup2(2),等等……你可能需要一些IPC,并且你可能需要在像poll(2)这样的多路复用系统调用周围有一些event loop

您可以使用一些 C++ 框架,例如 Qt 或 Poco(两者都具有进程抽象,并且可以在多个操作系统上使用,甚至可以在 Microsoft 的专有操作系统上使用)

如果您希望您的 C++ 程序在 Linux 上具有终端接口,请考虑 ncurses 和/或 readline

顺便说一句,HTTP 存在多个 C 或 C++ 库,例如libcurl 用于 HTTP 客户端,libonion 用于 HTTP 服务器端。因此,您可能会避免使用 Python 程序并将下载合并到您的 C++ 应用程序中。

【讨论】:

【参考方案2】:

查看 boost 库,它允许在 C++ 上运行 python 并在 python 中使用你的 C++。 https://www.boost.org/doc/libs/1_49_0/libs/python/doc/

【讨论】:

以上是关于从 C++ 程序运行 python 程序?的主要内容,如果未能解决你的问题,请参考以下文章

从 python 程序执行 C++ 程序

从 Django 框架运行 C++ 程序

从 C++ 停止嵌入式 Python 提示符

linux下编写并运行python和C++程序

将数据从 c++ 程序传递到 linux 上的 python 程序 [关闭]

在 c 中嵌入 Python,然后在不工作的 c++ 程序中运行它