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

时间:2013-09-28 22:08:10

标签: c gtk

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

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

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

2 个答案:

答案 0 :(得分:7)

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

如果您无法使用GtkApplication,那么您可以使用libuniqueGtkApplication弃用,但适用于GTK + 2.x和GTK + 3.x):{{3 }}

或者,您可以实现基于DBus的GtkApplicationlibunique使用的相同系统:您应该在第一个实例中为您的应用程序获取一个众所周知的名称,如果有些东西已经拥有这个众所周知的名字,这意味着已经有一个实例在运行,然后退出你的应用程序。

答案 1 :(得分:2)

GtkApplication就是你想要的。基本上,您需要做的就是将唯一的字符串传递给gtk_application_new()。其基类的页面GApplication解释了详细信息。