Я новичок в 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);
и никогда не запускается. [ 119]
Может кто-нибудь показать мне, где я делаю ошибку?
Вместо DBUS_BUS_SESSION
я должен был использовать DBUS_BUS_SYSTEM
, так как интерфейс org.freedesktop.UPower
не отправляет сигналы в объеме сеанса.
Так просто.