2013-09-28 14 views
6

Napisałem aplikację GTK w języku C na moim systemie Linux. Obecnie mogę otwierać lub uruchamiać wiele wystąpień mojej aplikacji. Jak mogę zmodyfikować kod tak, aby tylko jedna instancja na maksimum mogła działać jednocześnie?Zapobieganie wielokrotnym instancjom aplikacji GTK

Wiem, że istnieje wiele sposobów, aby to osiągnąć. Jednym z nich jest użycie wyboru X; innym jest użycie pliku potoku/zamka; jeszcze innym jest użycie D-Bus.

Chcę użyć D-Bus, ale nie wiem jak.

Odpowiedz

6

można użyć GtkApplication, która domyślnie obsługuje obsługę pojedynczej instancji.

jeśli nie można użyć GtkApplication następnie można użyć libunique (która jest przestarzała przez GtkApplication ale działa dobrze zarówno z GTK + 2.x oraz 3.x GTK +): https://wiki.gnome.org/LibUnique

alternatywnie, można zaimplementować ten sam system wykorzystywany zarówno przez GtkApplication, jak i libunique, który jest oparty na DBus: w pierwszej kolejności powinieneś zdobyć dobrze znaną nazwę dla swojej aplikacji, a jeśli coś już posiada tę dobrze znaną nazwę, co oznacza, że ​​już działa instancja, to wyjdź z aplikacji.

1

GtkApplication jest to, co chcesz. Zasadniczo wszystko, co musisz zrobić, to przekazać unikalny ciąg do gtk_application_new(). Strona jego klasy bazowej, GApplication, wyjaśnia szczegóły.

+0

Moja aplikacja musi zostać przeniesiona na GtkApplication. Teraz nie mam na to czasu, jest duży. W każdym razie dzięki – user1935430

Powiązane problemy