Есть кроссплатформенное приложение (Windows, Linux, MacOS), написанное на с++ с использованием кроссплатформенных библиотек. Приложение состоит из демона/сервиса, ГУИ и инсталлятора. Демон скачивает обновление и должен запустить инсталлятор. Проблема в том как определить запущен ГУИ или нет и как инсталлятору дождаться завершения ГУИ и демона чтобы начать обновление.
Вариант синхронизации через именованные мьютексы руководство отвергло, так как если убить процесс из диспетчера задач, то мьютекс остается.
Вариант с синхронизацией через файлы не получается, т.к. не знаем как выбрать путь для синхрофайла во всех 3-х ОС-ях. В общем случае 3 программы могут быть запущены из разных папок, в т.ч. и с сиди/дивиди.
Вопросы:
1. Как решить проблему с мьютексами?
2. Как выбрать путь для файла из 3-х программ для 3-х ОС и с полномочиями туда писать?
3. Любые другие варианты решений.