c - 使用 gdbus 查找 D-Bus 唯一地址

标签 c linux dbus bluez gdbus

我正在尝试找出使用 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/

相关文章:

linux - dbus_g_object_register_marshaller函数有什么用

python - 在 Python 中为 dbus 接口(interface)自动生成接口(interface)实现?

带有 glib 的 C 和 dbus 字典

java - Unix Swap 和 java heap space Exception 的避免

linux - 在 ubuntu 终端中跳转到命令历史末尾的键盘快捷键

c - K&R 中的 getline 函数定义

c - 从 argv 到 execvp

c - 使用 malloc 和 realloc 进行动态存储的最佳方式

ios - Mach 代码导致 iOS 和 Cocoa 上的内存耗尽

linux - 需要有关 shell 脚本的帮助以获得预期输出