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

C 防止GTK应用程序的多个实例,c,gtk,C,Gtk,我在Linux系统上用C编写了一个GTK应用程序。 目前,我可以打开或启动应用程序的多个实例。 如何修改代码以便一次最多只能运行一个实例 我知道有很多方法可以做到这一点。 一种是使用X选择;另一种是使用管道/锁定文件;还有一个是使用D-Bus 我想用D-Bus,但我不知道怎么用。正是你想要的。基本上,您所需要做的就是将一个唯一的字符串传递给。其基类的页面解释了详细信息。您可以使用GtkApplication,它默认为您提供单实例支持 如果不能使用GtkApplication,则可以使用libun

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

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


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

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

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

如果不能使用
GtkApplication
,则可以使用
libunique
(这是
GtkApplication
所不推荐的,但可以同时使用GTK+2.x和GTK+3.x):


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

我的应用程序需要移植到GTK应用程序。现在我没有时间做这个,太大了。无论如何,谢谢