9

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

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

D-Bus を使いたいのですが、方法がわかりません。

4

2 に答える 2

8

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

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

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

于 2013-09-29T09:33:37.823 に答える
3

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

于 2013-09-28T22:38:05.913 に答える