我正在尝试使用 BlueZ 5.44
中的 org.bluez.Profile1
。当通过 NewConnection
DBus 方法连接新设备时,我们会得到一个要使用的文件描述符。我很困惑这个文件描述符处于什么状态,以及我需要做什么才能从中读取/写入。简单地调用 read
/write
对我来说并不像预期的那样。
在文件中test/test-profile ,我看到了这行 python 代码:
self.fd = fd.take()
我正在努力寻找与 take
方法等效的 Linux C。关于如何在 C 代码中配置此 fd 以便我可以使用 fd 进行读/写的任何建议都将非常有帮助!
谢谢
最佳答案
我的问题最终出在我使用的 gdbus-codegen
工具上。使用该工具时,每个 fd 参数实际上是 GUnixFDList
的索引(关于该对象的文档 here )。为了让 GUnixFDList
通过方法 NewConnection
传递,我不得不在 xml 中将方法注释为 org.gtk.GDBus.C.UnixFD
。可以找到注释文档here .
关于python - 在 C 中对 BlueZ 提供的文件描述符进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45601302/