我在Linux系統上用C寫了一個GTK應用程序。 目前,我可以打開或啓動我的應用程序的多個實例。 如何修改代碼以便一次只能運行一個實例?防止GTK應用程序的多個實例
我知道有很多方法可以做到這一點。 一個是使用X選擇;另一種是使用管道/鎖定文件;還有一個是使用D-Bus。
我想用D-Bus,但我不知道如何去做。
我在Linux系統上用C寫了一個GTK應用程序。 目前,我可以打開或啓動我的應用程序的多個實例。 如何修改代碼以便一次只能運行一個實例?防止GTK應用程序的多個實例
我知道有很多方法可以做到這一點。 一個是使用X選擇;另一種是使用管道/鎖定文件;還有一個是使用D-Bus。
我想用D-Bus,但我不知道如何去做。
您可以使用GtkApplication
,它默認爲您提供單實例支持。
,如果你不能使用GtkApplication
那麼你可以使用libunique
(由GtkApplication
它被廢棄了,但正常工作與兩個GTK + 2.x和GTK + 3.X):https://wiki.gnome.org/LibUnique
或者,您也可以實現使用相同的系統基於DBus的GtkApplication
和libunique
都是這樣的:你應該在第一個實例中爲你的應用程序獲得一個知名的名稱,如果某個東西已經擁有那個知名的名字,意味着已經有一個實例在運行,那麼退出您的應用程序。
GtkApplication是你想要的。基本上,你需要做的只是傳遞一個唯一的字符串到gtk_application_new()。其基類的頁面GApplication解釋了細節。
我的應用程序需要移植到GtkApplication。現在我沒有時間了,這是很大的。不管怎樣,謝謝 – user1935430