我正在处理使用不推荐使用的库dbus-glib的旧版嵌入式代码。
在遗留代码中,此代码片段效果很好:
GError* error = NULL;
DBusGConnection *systemBus = dbus_g_bus_get_private(DBUS_BUS_SYSTEM, NULL, &error);
现在,我尝试使用GDBus等效的系统总线:
GError* error = NULL;
GDBusConnection *systemBus = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
这个失败,error->message
返回Could not connect: No such file or directory
。
有什么区别?
顺便说一句,同一个呼叫在会话总线上运行:
GError* error = NULL;
DBusConnection *sessionBus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
答案 0 :(得分:0)
您是否以root权限运行它?根据我的经验,dbus访问系统总线受到限制。会话总线由用户拥有,因此永远不会出现访问问题。
根据此documentation,您希望建立私人连接时使用dbus-address-get-for-bus-sync和g-dbus-connection-new-for-address。