在 C 中对 BlueZ 提供的文件描述符进行操作

Operate on BlueZ provided file descriptor in C

我正在尝试使用 BlueZ 5.44 中的 org.bluez.Profile1。当通过 NewConnection DBus 方法连接新设备时,我们会得到一个文件描述符来使用。我很困惑这个文件描述符处于什么状态,以及我需要做什么才能从它 read/write 。简单地调用 read/write 对我来说并不像预期的那样。

在文件 test/test-profile 中,我看到这行 python 代码:

self.fd = fd.take()

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

谢谢

我的问题最终出在我使用的 gdbus-codegen 工具上。使用该工具时,每个 fd 参数实际上是 GUnixFDList 的索引(关于该对象的文档 here). In order to have the GUnixFDList passed with the method NewConnection, I had to annotate the method in xml as org.gtk.GDBus.C.UnixFD. Annotation documentation can be found here.