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