C ++ Qt在单独的进程

时间:2016-05-06 06:07:49

标签: c++ qt process

我正面临着如何在单独的流程中运行应用程序的不同部分的问题,因为设置流程名称的QProcess的成员函数需要一个完整的路径。

void setProgram(const QString &program)

但我正在尝试运行的过程基本上是主应用程序的一个模块。那么让我解释一下我基本上想要实现的目标。

应用程序将QMainWindow作为中央窗口,它将控制所有不同的模块,监视它们,停止/重启它们,通过IPC机制与它们通信。

  1. 因此,例如,其中一个模块有一个QWebEngineView,它将用户引导到某个网站并管理该用户的会话信息(cookie,身份验证等),并让用户像往常一样通过网站使用该网站一个浏览器。
  2. 另一个模块将连续执行CPU密集型计算,而不会阻止应用程序的任何部分。
  3. 另一个模块将呈现一个完整的Javascript图表应用程序。
  4. 等等。在这个应用程序中有许多这样的重量级模块,因此使用线程方法是不可取的,因为基本上这些模块需要在它们各自的内存空间中运行,并且将充当MainWindow进程的子进程。使用D-Bus,SharedMemory可以很好地处理进程之间的通信。

    但我无法弄清楚当用户点击MainWindow中的特定操作/按钮时,如何实际创建这些子进程。同样,这些模块在一个应用程序中非常集成,并且由于安全性和完整性限制而无法在外部调用。所以请告诉我任何实现这一目标的方法。

1 个答案:

答案 0 :(得分:2)

一种方法是使用相同的可执行文件,并使用命令行参数控制启动哪个模块。请参阅this answer中的一个简单示例。进程间通信可以使用本地套接字完成,您也可以跨进程发送插槽调用 - 例如, CuteIPC

相关问题