Qt перезапустите приложение, ограничив количество экземпляров 1

Я использую Qt5.6, у меня есть код, который перезапустит приложение, но я также хочу ограничить количество экземпляров.

Работает код, который ограничивает экземпляры, и код, который перезапускает приложение, но при включенном ограничивающем коде приложение не перезапускается, оно закрывается, но я предполагаю, что перезапуск блокируется, потому что во время попытки для запуска нового экземпляра PID оригинала не очищен.

Вопрос в том, как добиться результата закрытия приложения, ограничивая общее количество экземпляров 1?

Если это не будет решено к завтрашнему дню, я выложу код для перезапуска и ограничения экземпляров, у меня его сейчас нет со мной.

Код для перезапуска приложения:

    qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());

0

Решение

Это просто подсказки для сторожевого скрипта:

1 — вам нужно использовать QProcess :: startDetached для запуска скрипта перед выходом из приложения. Это позволит процессу сценария жить после выхода из приложения.

QProcess::startDetached( "bash", QStringList() << "-c" << terminalCommand );

2 — вам нужно передать текущий PID приложения в ваш сторожевой скрипт через terminalCommand

получить текущий идентификатор приложения в Qt

qApp->applicationPid();

3- в вашем сторожевом скрипте есть бесконечный цикл, который проверяет PID, выполняя

ps aux | grep -v 'grep' | grep $PID

как только PID умирает, снова запустите ваше приложение из скрипта сторожевого таймера

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]