Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: RedDog от Апрель 21, 2011, 08:35



Название: Запрет запуска 2-й копии бинарника
Отправлено: RedDog от Апрель 21, 2011, 08:35
Как средствами Qt сделать невозможным запуск 2-й копии бинарника, при этом, если пользователь пытается запустить 2-ю копию, то она не запускалась, открывалось окно 1-й копии.
Под виндой помниться это делалось глобальным мутексом и его проверкой при старте. А как сделать это кроссплатформенно?


Название: Re: Запрет запуска 2-й копии бинарника
Отправлено: GreatSnake от Апрель 21, 2011, 08:40
QtSingleApplication (http://doc.qt.nokia.com/solutions/4/qtsingleapplication/qtsingleapplication.html)


Название: Re: Запрет запуска 2-й копии бинарника
Отправлено: merke от Апрель 21, 2011, 08:41
Есть готовый класс QSingleApplication

Я например под виндой делал следующее: при загрузке проги проверял её имя в процессах, если там было больше одной запущенной проги, то закрывался. Я думаю это же можно проделать и в линуксе. А для того чтобы при запуске второй проги, она закрывалась и первая копия показывалась, можно использовать пайпы: когда прога загружается и видет чтоона в единственном экземпляре запущена, создаешь именованный пайп и прослушиваешь его. Если когда запускаешься и видишь, что ты ты уже вторая копия, коннектившься в именованному пайпу и шлешь произвольную команду, первая копия получив твою команду показывает себя. а вторая копия уже в этот момент завершается.


Название: Re: Запрет запуска 2-й копии бинарника
Отправлено: RedDog от Апрель 21, 2011, 10:14
Скачал сырцы, а как их теперь в Qt установить?
ЗЫ: Сборка Qt статическая.