2013-09-28 3 views
6

Я написал приложение GTK в C на моей Linux-системе. В настоящее время я могу открыть или запустить несколько экземпляров моего приложения. Как я могу изменить код, чтобы только один экземпляр мог работать одновременно?Предотвращение нескольких экземпляров приложения GTK

Я знаю, что существует много способов достичь этого. Одним из них является использование выбора X; другой - использовать файл pipe/lock; еще один - использовать D-Bus.

Я хочу использовать D-Bus, но я не знаю, как это сделать.

ответ

6

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

, если вы не можете использовать GtkApplication, то вы можете использовать libunique (который устаревшим GtkApplication, но прекрасно работает как с GTK + 2.x и 3.x GTK +): https://wiki.gnome.org/LibUnique

в качестве альтернативы, вы можете реализовать такую ​​же систему, используемую как GtkApplication, так и libunique, основанный на DBus: вы должны приобрести известное имя для своего приложения в первом экземпляре, и если что-то уже содержит это хорошо известное имя, что означает, что уже запущен экземпляр, тогда выйдите из приложения.

1

GtkApplication - это то, что вы хотите. В принципе, все, что вам нужно сделать, это передать уникальную строку в gtk_application_new(). Страница его базового класса, GApplication, объясняет детали.

+0

Мое приложение необходимо портировать на GtkApplication. Теперь у меня нет времени на это, это большой. В любом случае, спасибо – user1935430

Смежные вопросы