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