上篇文章<<D-Bus实例介绍>>中简要介绍了D-Bus
的基本概念,其中提到systemd
、NetworkManager
等系统服务导出了D-Bus API
供其他程序来调用。本文通过示例来说明这些API的查找与调用。
上篇文章我们提到D-Bus
的object
可以实现多个Interface
。D-Bus
规范中标准化了一些接口,这些接口对于我们调用其他服务提供的D-Bus API非常有帮助。
我们主要来看其中的两个:
它有一个方法:
1 | org.freedesktop.DBus.Introspectable.Introspect (out STRING xml_data) |
它会返回一个包含有对象(object), 接口(interface), 方法(methods), 信号(signals),属性(properties)等信息的XML字符串。对象如果实现这个接口, 我们就可以通过调用该方法了解这个对象对外提供的所有信息。
XML字符串的解析方法可以参考官方文档:
https://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format