D-Bus 列表名称

Posted

技术标签:

【中文标题】D-Bus 列表名称【英文标题】:D-Bus list name 【发布时间】:2012-09-04 21:26:33 【问题描述】:

如何使用 C 列出 D-Bus sessionBus 中的所有名称?

我正在寻找与dbus.list_names python method 等效的C GIO

我想列出 «org.mpris.MediaPlayer2» 中的所有名称,例如 «org.mpris.MediaPlayer2.clementine, org.mpris.MediaPlayer2.someotherplayer, ...»

有一个名为 «qdbusviewer» 的应用程序可以做类似的事情

【问题讨论】:

【参考方案1】:

关于接口名称、方法和参数的信息应该在introspection section 中。

您可以使用g_dbus_node_info_lookup_interface () 方法请求有关接口的信息(例如org.mpris.MediaPlayer2),您可以向该方法提供GDBusNodeInfo 参数,该参数应包含您要查询的dbus 对象的路径。

通过此调用,您可以返回一个 GDBusInterfaceInfo 对象,其中包含有关所请求接口的方法和参数的信息。

【讨论】:

我不是在搜索方法、信号和属性名称,而是在搜索总线名称。我找到了«org.freedesktop.DBus.ListNames» 方法,它可以满足我的搜索需求【参考方案2】:

此任务没有特定的 GIO 方法,

可以通过调用 «org.freedesktop.DBus.ListNames» 列出总线名称,过滤必须稍后完成。

可以使用introspection 方法获取有关总线的信息。

【讨论】:

以上是关于D-Bus 列表名称的主要内容,如果未能解决你的问题,请参考以下文章

.Service 文件 D-Bus

关于使用 D-Bus 异步方法调用的 Python 中的线程安全

在列表框中显示表名 (VB)

在 Java 中通过 D-Bus MPRIS 访问 Clementine 实例

如何为 D-Bus 方法创建 String, Variant 的字典?

如何找到在 D-Bus 接口中公开的方法