首页 > 解决方案 > 如何从其他用户的桌面程序获取 dbus 消息

问题描述

我的问题:

  1. 在 debian 系统中,我使用通用会话登录。
  2. 我有一个程序 A,它使用一些方法 func1、func2 创建了一个总线名称“cn.com.notify.ring”...
  3. 我有一个程序B调用func1是成功的。
  4. 现在我有另一个程序 C 应该使用sudo -EC运行
  5. 问题是程序 C 找不到会话总线,也无法调用方法。我该怎么做才能解决这个问题。

我尝试:

我知道我需要 -E 来获取DBUS_SESSION_BUS_ADDRESS,并运行setuid()将用户 ID 更改为通用,但我不想这样做。

我的代码:

g_bus_own_name(G_BUS_TYPE_SESSION,
        "cn.com.notify.ring",
        G_BUS_NAME_OWNER_FLAGS_NONE,
        NULL,
        on_name_acquired,
        NULL,
        obj,
        NULL);

标签: clinuxdebiandbus

解决方案


推荐阅读