2013-09-28 14 views
6

Ho scritto un'applicazione GTK in C sul mio sistema Linux. Al momento, posso aprire o avviare più istanze della mia applicazione. Come posso modificare il codice in modo che solo un'istanza al massimo possa essere eseguita alla volta?Prevenzione di più istanze di un'applicazione GTK

So che ci sono molti modi per raggiungere questo obiettivo. Uno consiste nell'utilizzare una selezione X; un altro è usare un file pipe/lock; ancora un altro è usare D-Bus.

Voglio usare D-Bus, ma non so come.

risposta

6

è possibile utilizzare GtkApplication, che fornisce supporto per singola istanza per impostazione predefinita.

se non è possibile utilizzare GtkApplication quindi è possibile utilizzare libunique (che è deprecato da GtkApplication ma funziona bene sia con GTK + 2.x e GTK + 3.x): https://wiki.gnome.org/LibUnique

In alternativa, è possibile implementare lo stesso sistema usato sia da GtkApplication sia da libunique, che è basato su DBus: dovresti acquisire un nome ben noto per la tua applicazione in prima istanza, e se qualcosa sta già tenendo quel nome noto, significa che esiste già un'istanza in esecuzione, quindi esci dalla tua applicazione.

1

GtkApplication è quello che vuoi. Fondamentalmente, tutto ciò che devi fare è passare una stringa univoca a gtk_application_new(). La pagina della sua classe base, GApplication, spiega i dettagli.

+0

La mia app deve essere trasferita su GtkApplication. Ora non ho tempo per questo, è troppo grande. Comunque grazie – user1935430