在BlueZ上操作BlueZ提供的文件描述符

时间:2017-08-09 22:01:11

标签: python c linux bluetooth bluez

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

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

self.fd = fd.take()

我很难找到与take方法等效的Linux C.关于如何在C代码中配置这个fd所以我可以用fd读/写的任何建议都会非常有帮助!

由于

1 个答案:

答案 0 :(得分:1)

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