Qt 重启应用程序同时将实例限制为 1
Qt restart application whilst limiting instances to 1
我正在使用 Qt5.6,我有代码可以重新启动应用程序,但我也想限制实例数。
限制实例的代码有效,重启应用程序的代码也有效,但启用限制代码后,应用程序不会重启,它会关闭,但我猜重启被阻止了,因为在它尝试启动新实例时,原始实例的 PID 尚未清除。
问题是,如何实现关闭应用的结果,同时限制实例总数为1?
如果明天还没有解决我会post重启和限制实例的代码,我现在没有。
重启应用程序的代码:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
这些只是看门狗脚本的提示:
1- 在退出您的应用程序之前,您需要使用 QProcess::startDetached 到 运行 您的脚本。这将允许脚本进程在退出您的应用程序后继续运行。
QProcess::startDetached( "bash", QStringList() << "-c" << terminalCommand );
2- 您需要通过 terminalCommand
将当前 App PID 传递给您的看门狗脚本
在Qt中使用获取当前App PID
qApp->applicationPid();
3- 在你的看门狗脚本中,有一个无限循环来检查 PID
ps aux | grep -v 'grep' | grep $PID
一旦 PID 消失,从你的看门狗脚本重新启动你的应用程序
我正在使用 Qt5.6,我有代码可以重新启动应用程序,但我也想限制实例数。
限制实例的代码有效,重启应用程序的代码也有效,但启用限制代码后,应用程序不会重启,它会关闭,但我猜重启被阻止了,因为在它尝试启动新实例时,原始实例的 PID 尚未清除。
问题是,如何实现关闭应用的结果,同时限制实例总数为1?
如果明天还没有解决我会post重启和限制实例的代码,我现在没有。
重启应用程序的代码:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
这些只是看门狗脚本的提示:
1- 在退出您的应用程序之前,您需要使用 QProcess::startDetached 到 运行 您的脚本。这将允许脚本进程在退出您的应用程序后继续运行。
QProcess::startDetached( "bash", QStringList() << "-c" << terminalCommand );
2- 您需要通过 terminalCommand
在Qt中使用获取当前App PID
qApp->applicationPid();
3- 在你的看门狗脚本中,有一个无限循环来检查 PID
ps aux | grep -v 'grep' | grep $PID
一旦 PID 消失,从你的看门狗脚本重新启动你的应用程序