【问题标题】:g_bus_get_sync returns NULL but dbus_g_bus_get_private worksg_bus_get_sync 返回 NULL 但 dbus_g_bus_get_private 有效
【发布时间】:2016-05-21 03:33:25
【问题描述】:

我正在处理使用已弃用库 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);

【问题讨论】:

    标签: c glib dbus


    【解决方案1】:

    您是否以 root 权限运行它?根据我对 dbus 的经验,对系统总线的访问受到限制。会话总线归用户所有,因此访问永远不会有问题。

    根据这个documentation,当你想建立私有连接时,你应该使用dbus-address-get-for-bus-syncg-dbus-connection-new-for-address

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      相关资源
      最近更新 更多