有没有办法声明 Python 应用程序通过 DBus 订阅了哪些信号?
换句话说,有没有办法通过订阅信号的“Introspectable”接口(interface)做广告。我使用“D-Feet D-Bus 调试器”。
例如应用程序订阅信号 X(在 bus
对象上使用 add_signal_receiver
方法)。
最佳答案
D-Bus 客户端调用总线守护进程上的 AddMatch
来注册他们对匹配特定模式的消息的兴趣;当您创建代理对象时,大多数绑定(bind)会为特定服务和对象路径上的所有信号或该服务和对象路径上的特定接口(interface)上的信号添加匹配规则。
使用 dbus-monitor 您可以看到正在添加的匹配规则:尝试运行 dbus-monitor member=AddMatch
然后运行一个使用 D-Bus 的应用程序。同样,您可以窃听对 RemoveMatch
的调用。但是,目前无法向守护进程询问当前有效的匹配规则集。考虑到守护进程已经知道,添加一种询问该问题的方法比添加一种让客户端重新通告该问题的方法更有意义。
关于python - 声明在 DBus 上订阅了哪些信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240562/