gpt4 book ai didi

C++ Qt 在单独的进程中运行应用程序的各个部分

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:18 28 4
gpt4 key购买 nike

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

void setProgram(const QString &program)

但我尝试运行的进程基本上是主应用程序的一个模块。因此,让我解释一下我基本上要实现的目标。

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

  1. 因此,例如,其中一个模块有一个 QWebEngineView,它将把用户引导到某个网站并为该用户管理 session 信息(cookie、身份验证等),并让用户像平时一样使用该网站一个浏览器。
  2. 另一个模块将持续执行 CPU 密集型计算,而不会阻塞应用程序的任何部分。
  3. 另一个模块将呈现一个完整的 Javascript 图表应用程序。

等等。此应用程序中有许多此类重量级模块,因此使用线程方法是不可取的,因为基本上这些模块需要在其单独的内存空间中运行,并将充当 MainWindow 进程的子进程。使用 D-Bus,SharedMemory 可以很好地处理进程之间的通信。

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

最佳答案

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

关于C++ Qt 在单独的进程中运行应用程序的各个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37065434/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com