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