如何在qt中停止分离进程?

时间:2014-05-26 00:23:37

标签: c++ qt qtcore qprocess

使用QProcess::startDetached启动流程后,我该如何在以后停止?

假设主程序运行,然后启动独立运行的独立进程。用户关闭主程序,然后再打开它并想要停止该过程。我如何找到该过程然后停止它?

2 个答案:

答案 0 :(得分:1)

  

有没有办法可以阻止同一个进程的应用程序两次?

不,它会与您的应用程序分离。您可以获取它的PID然后在Linux上发送SIGSTOP,但这是特定于平台的,如果没有POSIX支持,将无法使用,就像使用msvc一样。你需要手工制作你的版本。

  

有没有办法可以阻止同一个进程的应用程序两次?

是的,通过在分离过程中使用锁定文件。如果该分离过程恰好至少部分写入Qt,则可以使用the QLockFile class

如果您碰巧分离某些特定于平台的流程,那么您肯定会再次遇到相同的重复问题。

答案 1 :(得分:0)

这是我想出的答案:

我首先启动生成唯一ID的分离进程。该进程在运行时写入文件(是1分钟计时器)。当它运行时,它将其id写入文件。然后,如果碰巧有另一个运行,如果它看到前一个运行,它只是将其id写入文件并且不运行,然后,当下一个运行时,它会看到它的id是否是已经在文件中,如果是,它关闭并清除文件,然后下一次运行最终自由运行,是唯一运行的。这可能最终会跳过一段时间。

您也可以添加一个时间戳,因为这可能表示它最近没有运行,并帮助决定是否关闭它。问题是如果我只是将id写入文件,当我关闭手机时,文件会说它仍然在运行。如果它崩溃也是如此。