2013-09-28 10 views
6

Ich habe eine GTK-Anwendung in C auf meinem Linux-System geschrieben. Derzeit kann ich mehrere Instanzen meiner Anwendung öffnen oder starten. Wie kann ich den Code so ändern, dass immer nur eine Instanz gleichzeitig ausgeführt werden kann?Mehrere Instanzen einer GTK-Anwendung verhindern

Ich weiß, dass es viele Möglichkeiten gibt, dies zu erreichen. Eine besteht darin, eine X-Auswahl zu verwenden; Eine andere Möglichkeit besteht darin, eine Pipe/Lock-Datei zu verwenden. noch ein anderer ist der D-Bus.

Ich möchte D-Bus verwenden, aber ich weiß nicht wie.

Antwort

6

können Sie GtkApplication verwenden, die standardmäßig Single-Instance-Unterstützung bietet.

wenn Sie GtkApplication dann nicht verwenden, können Sie libunique verwenden können (die durch GtkApplication ist veraltet, aber funktioniert sowohl mit GTK + 2.x und GTK + 3.x): https://wiki.gnome.org/LibUnique

alternativ können Sie das gleiche System implementieren verwendet durch beide GtkApplication und libunique, die auf DBus basiert: Sie sollten einen bekannten Namen für Ihre Anwendung in der ersten Instanz erwerben, und wenn etwas bereits diesen bekannten Namen enthält, was bedeutet, dass dort bereits eine Instanz läuft, dann Beenden Sie Ihre Bewerbung.

1

GtkApplication ist was du willst. Sie müssen lediglich eine eindeutige Zeichenfolge an gtk_application_new() übergeben. Die Seite ihrer Basisklasse, GApplication, erklärt die Details.

+0

Meine App muss nach GtkApplication portiert werden. Jetzt habe ich keine Zeit dafür, ist zu groß. Trotzdem danke – user1935430