2013-09-28 9 views
6

LinuxシステムでCでGTKアプリケーションを作成しました。 現在、私はアプリケーションの複数のインスタンスを開いたり起動したりすることができます。 一度に1つのインスタンスしか実行できないように、コードを変更するにはどうすればよいですか?GTKアプリケーションの複数インスタンスの防止

私はこれを達成するための多くの方法があることを知っています。 1つはX選択を使用することです。別の方法は、パイプ/ロックファイルを使用することです。さらにもう1つはDバスを使用することです。

私はDバスを使用したいと思いますが、どのようにすればよいかわかりません。

答えて

6

GtkApplicationを使用すると、デフォルトで単一インスタンスのサポートが提供されます。

あなたは、あなたが(GtkApplicationで非推奨ですが、GTK + 2.xとGTK + 3.xの両方で正常に動作している)libuniqueを使用することができますGtkApplicationを使用できない場合:代わりhttps://wiki.gnome.org/LibUnique

、あなたが使用したのと同じシステムを実装することができますGtkApplicationlibuniqueの両方で、これはDBusに基づいています。最初のインスタンスでは、アプリケーションのよく知られた名前を取得する必要があります。また、既にその既知の名前を保持しているインスタンスアプリケーションを終了します。

1

GtkApplicationはあなたが望むものです。基本的には、gtk_application_new()に一意の文字列を渡すだけです。基本クラスのページGApplicationは詳細を説明しています。

+0

私のアプリはGtkApplicationに移植する必要があります。今私はこれのための時間を持っていない、大きなです。とりあえずありがとう – user1935430

関連する問題