我想知道是否可以创建一个QProcess
并将其初始化为已经运行的进程?
我的应用程序启动了另一个应用程序。所以如果我的应用程序异常关闭,当它重新启动时,我想附加另一个应用程序。
不幸的是,由于 的内部架构QProcess
,不支持此功能。您需要将一堆QProcess
代码复制粘贴到一个新类中,然后自己添加缺少的功能。
不过,还有一种更简单的方法:创建一个暴露QProcess
via的流程包装器QLocalSocket
。包装器很简单,不应该崩溃。它可以在进程本身终止时自行终止,以防止悬挂的包装器挂起。当您的应用程序崩溃或终止时,如果存在包装器,新实例可以尝试附加到本地套接字。如果它不存在,那么它将产生一个新的包装器。
您应该使用 IPC 系统,例如Linux 上的 Qt D-Bus。然后,您通过 IPC 系统而不是 stdin 和 stdout 与其他进程通信。
当您的前端应用程序崩溃时,重新启动的应用程序可以重新连接到后端进程。