启动、停止和发送参数以将 Python 脚本与 C++ 应用程序分开的最佳方法?

问题描述 投票:0回答:3

我尝试解释一下情况:

  • 我有一个用 C++ 和 QT 编写的 QT 应用程序。

  • 此 QT 应用程序启动一个在后台运行的单独控制台 C++ 应用程序。

  • 这两个可能使用套接字进行通信,目前还不知道。

  • 控制台 C++ 应用程序需要启动和停止我的 gnuradio python 脚本。它还需要向其发送参数。

  • 一旦启动,这个 gnuradio 脚本就会在无限循环中独立运行,可能会使用套接字向控制台或 QT 应用程序发送信息。

  • 当 QT 应用程序发出命令时,我的控制台应用程序需要停止此 gnuradio 脚本的运行。

问题是如何从我的 C++ 控制台应用程序中停止这个单独的 python 脚本?还有什么我可以做的让这更简单吗?

c++ python qt gnuradio
3个回答
2
投票

Sockets,或者你可以使用 DBUS pythonDBUS c++,如果你想成为全部免费桌面:D


2
投票

使用 fork() 和 execv() 将 python 脚本生成为新进程。 execv()(或 exec 系列的任何其他函数)允许您将参数传递给 Python 脚本。完成 Python 脚本后,使用子进程 ID 发送终止信号。


0
投票

对于您的 C++ 程序,您可能想看一下这里:

http://www.codeproject.com/KB/cpp/kill_process.aspx

它为您提供了创建和终止外部进程的基本代码。请记住,启动 python 脚本意味着调用 python bin 并将脚本作为第一个参数。

C++ 应用程序和 python 脚本之间的通信可以通过命名管道进行

http://en.wikipedia.org/wiki/Named_pipe

但是DBUS也可以工作。

我的建议是:

1) 使用 QT 的优点从 QT 应用程序启动 C++ 应用程序。您可以让这两者通过标准 I/O 重定向进行通信(取决于您真正想要做什么)

2) 按照上面给出的示例从 C++ 启动 python 脚本。这两者通过 DBUS/Socket/Pipes 进行通信。

应该可以解决问题

© www.soinside.com 2019 - 2024. All rights reserved.