在 BlueZ 提供的 C 语言文件描述符上进行操作

在 BlueZ 提供的 C 语言文件描述符上进行操作

org.bluez.Profile1我正在尝试与in合作BlueZ 5.44。当通过 DBus 方法连接新设备时NewConnection,我们会获得一个可以使用的文件描述符。我对这个文件描述符处于什么状态以及我需要做什么才能从中读取/写入感到相当困惑。简单地调用read/write并不符合我的预期。

在文件中测试/测试配置文件,我看到这行Python代码:

self.fd = fd.take()

我正在努力寻找与该take方法等效的 Linux C。任何有关如何在 C 代码中配置此 fd 以便我可以使用该 fd 进行读/写的建议都会非常有帮助!

谢谢

答案1

我的问题最终出在gdbus-codegen我使用的工具上。使用该工具时,每个 fd 参数实际上是一个索引GUnixFDList(该对象的文档这里)。为了让GUnixFDList该方法通过NewConnection,我必须在 xml 中将该方法注释为org.gtk.GDBus.C.UnixFD.可以找到注释文档这里

相关内容