现在的位置: 首页 > 综合 > 正文

关于同一个进程调用dbus接口 dbus_g_bus_get () 导致程序崩掉的原因初探。

2013年08月02日 ⁄ 综合 ⁄ 共 374字 ⁄ 字号 评论关闭

问题:

以前使用dbus的接口,都是在不同的进程中使用的,比如:

connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);

多次调用,没有问题。

不过,近日,在同一个进程中加载不同的程序,这些程序都各自

调用了connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);

如果一个程序跑起来后,再运行第二个程序,dbus_g_bus_get()会失败,

把SYSTEM dbus搞死!!!

 

初步的原因是:线程锁的问题:

在调用dbus函数前调用线程初始化的接口后,

        if (!g_thread_supported ()) {

               g_thread_init (NULL);

        }

        dbus_g_thread_init ();

就好了。

 

 

抱歉!评论已关闭.