2013-09-28 72 views
6

我在Linux系統上用C寫了一個GTK應用程序。 目前,我可以打開或啓動我的應用程序的多個實例。 如何修改代碼以便一次只能運行一個實例?防止GTK應用程序的多個實例

我知道有很多方法可以做到這一點。 一個是使用X選擇;另一種是使用管道/鎖定文件;還有一個是使用D-Bus。

我想用D-Bus,但我不知道如何去做。

回答

6

您可以使用GtkApplication,它默認爲您提供單實例支持。

,如果你不能使用GtkApplication那麼你可以使用libunique(由GtkApplication它被廢棄了,但正常工作與兩個GTK + 2.x和GTK + 3.X):https://wiki.gnome.org/LibUnique

或者,您也可以實現使用相同的系統基於DBus的GtkApplicationlibunique都是這樣的:你應該在第一個實例中爲你的應用程序獲得一個知名的名稱,如果某個東西已經擁有那個知名的名字,意味着已經有一個實例在運行,那麼退出您的應用程序。