我是 dbus 的新手,所以请耐心等待。
我有以下代码: http://pastebin.com/8zpM7Pwb。
这是我发现并根据我的情况进行修改的一些样本。
一般的想法是“捕获”来自和的 dbus 信号com.canonical.Unity.Panel.Service
(org.freedesktop.UPower
主要是第二个 - 我只使用 Panel 作为比较)。问题是我收到了 Unity Panel 信号,但没有收到来自 UPower 的信号。我确实dbus-monitor
在同一时间在第二个终端启动,所以我确信那些信号确实会四处飞散。
我也对这些接口进行了逐一测试,结果是一样的 - 使用 Unity Panel 接口的代码获得了我想要的信号,使用 UPower 的代码却没有 - 它只是阻塞dbus_connection_read_write(conn, -1);
并且永远不会继续。
谁能告诉我我哪里犯了错误?
答案1
我应该DBUS_BUS_SESSION
使用DBUS_BUS_SYSTEM
,因为接口org.freedesktop.UPower
不会在会话范围内发送信号。
就如此容易。