我正在尝试找出使用 Linux 上的 GDBus 库获取 D-Bus 系统总线中对象的唯一 D-Bus 地址的最佳方法。
以下是我使用的库的版本号:
# ls /usr/lib |grep -e dbus -e glib -e gio
libdbus-1.so
libdbus-1.so.3
libdbus-1.so.3.14.11
libdbus-glib-1.so
libdbus-glib-1.so.2
libdbus-glib-1.so.2.3.3
libgio-2.0.so
libgio-2.0.so.0
libgio-2.0.so.0.5000.3
libglib-2.0.so
libglib-2.0.so.0
libglib-2.0.so.0.5000.3
基本上,我想知道使用 gdbus 库位于系统总线上的对象 /org/bluez/hci0
的唯一名称/地址。有没有人有我如何使用 C 库执行此操作的示例?
现在我可以使用命令了
# dbus-monitor --system
求出我需要的地址是:1.22
。我几乎可以肯定,有一种更好的方法来查找地址然后解析该命令的文本输出。
谢谢!
最佳答案
为什么不使用众所周知的服务名称来查找它(如果您想跟踪当前的唯一所有者,请使用 g_bus_watch_name()
来获取它)。
事实上,对于 bluez,我认为没有理由搜索“/org/bluez/hci0”,因为您应该使用 D-Bus ObjectManager API 来查找 bluez 的对象/接口(interface)服务导出。
关于c - 使用 gdbus 查找 D-Bus 唯一地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45112892/