将QProcess初始化为已在运行的进程

时间:2013-07-01 09:01:04

标签: qt process qprocess

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

我的应用程序启动了另一个应用程序。因此,如果我的应用程序异常关闭,它将重新启动,我想附加其他应用程序。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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