防止GTK应用程序的多个实例

use*_*430 7 c gtk

我在Linux系统上用C编写了一个GTK应用程序.目前,我可以打开或启动我的应用程序的多个实例.如何修改代码,以便一次最多只能运行一个实例?

我知道有很多方法可以实现这一目标.一种是使用X选择; 另一种是使用管道/锁定文件; 还有一个是使用D-Bus.

我想用D-Bus,但我不知道怎么做.

eba*_*ssi 7

您可以使用GtkApplication,默认情况下为您提供单实例支持.

如果你不能使用GtkApplication那么你可以使用libunique(已被弃用GtkApplication但在GTK + 2.x和GTK + 3.x上都能正常工作):https://wiki.gnome.org/LibUnique

另外,您也可以实现使用两个相同的系统GtkApplicationlibunique,这是基于的DBus:你应该在第一种情况下你的应用程序获得一个众所周知的名字,如果事情是已经持有的是著名的名字,这意味着已经是一个正在运行的实例,然后退出您的应用程序.