5

我想知道是否可以创建一个QProcess并将其初始化为已经运行的进程?

我的应用程序启动了另一个应用程序。所以如果我的应用程序异常关闭,当它重新启动时,我想附加另一个应用程序。

4

2 回答 2

1

不幸的是,由于 的内部架构QProcess,不支持此功能。您需要将一堆QProcess代码复制粘贴到一个新类中,然后自己添加缺少的功能。

不过,还有一种更简单的方法:创建一个暴露QProcessvia的流程包装器QLocalSocket。包装器很简单,不应该崩溃。它可以在进程本身终止时自行终止,以防止悬挂的包装器挂起。当您的应用程序崩溃或终止时,如果存在包装器,新实例可以尝试附加到本地套接字。如果它不存在,那么它将产生一个新的包装器。

于 2013-10-10T08:33:09.973 回答
1

您应该使用 IPC 系统,例如Linux 上的 Qt D-Bus。然后,您通过 IPC 系统而不是 stdin 和 stdout 与其他进程通信。

当您的前端应用程序崩溃时,重新启动的应用程序可以重新连接到后端进程。

于 2013-07-02T09:06:24.673 回答