重新连接到QT中的孤立进程
问题描述:
我们正在准备一个使用Qt的应用程序,该应用程序具有一个控制GUI的主进程并生成进行实际数据处理的进程。使用Qt机制和stdin/stdout管道在主进程和数据处理进程之间交换消息。重新连接到QT中的孤立进程
现在,如果GUI崩溃,其他进程继续运行。我们希望能够做的是,当新的GUI启动时,像以前一样重新连接到这些进程。任何人都知道这是否可能,如果是的话,如何实现它?
答
您可能希望调查进程间通信的共享内存。我似乎记得,在以前的工作中,它能够以非常类似的状况恢复。
如果您的平台支持它,另一种可能性是使用dbus进行进程之间的通信。如果是这样的话,那么这两个过程都不会在那里,但是如果它正在运行,将会采取适当的信息。
除了QProcess类对象在内部处理stdin/stdout/stderr管道。为了使用“命名管道”,QProcess类将不得不被修改,我宁愿避免。 – 2009-11-19 17:24:18
您没有说明您需要使用QProcess。在这种情况下,通过QProcess使用GUI应用程序创建代理进程。只要您的GUI应用程序,代理就会保持。它使用QProcess :: read()/ write()与您的GUI进行通信。此代理创建命名管道并启动辅助进程并将管道连接到工作站的标准输出/输出。它也会在工人死亡时重新启动。该代理可能可能是一个简单的小shell脚本。 – hirschhornsalz 2009-11-19 22:23:08