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