9

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

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

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

4

2 回答 2

8

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

如果您不能使用GtkApplication,那么您可以使用libunique(已弃用GtkApplication但适用于 GTK+ 2.x 和 GTK+ 3.x):https ://wiki.gnome.org/LibUnique

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

于 2013-09-29T09:33:37.823 回答
3

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

于 2013-09-28T22:38:05.913 回答