我在Linux系统上用C编写了一个GTK应用程序。 目前,我可以打开或启动我的应用程序的多个实例。 如何修改代码,以便一次只能运行一个实例?
我知道有很多方法可以实现这一目标。 一种是使用X选择;另一种是使用管道/锁定文件;还有一个是使用D-Bus。
我想使用D-Bus,但我不知道如何使用。
答案 0 :(得分:7)
您可以使用GtkApplication
,默认情况下为您提供单实例支持。
如果您无法使用GtkApplication
,那么您可以使用libunique
(GtkApplication
弃用,但适用于GTK + 2.x和GTK + 3.x):{{3 }}
或者,您可以实现基于DBus的GtkApplication
和libunique
使用的相同系统:您应该在第一个实例中为您的应用程序获取一个众所周知的名称,如果有些东西已经拥有这个众所周知的名字,这意味着已经有一个实例在运行,然后退出你的应用程序。
答案 1 :(得分:2)
GtkApplication就是你想要的。基本上,您需要做的就是将唯一的字符串传递给gtk_application_new()。其基类的页面GApplication解释了详细信息。