Linux
在 C 中對 BlueZ 提供的文件描述符進行操作
我正在嘗試使用
org.bluez.Profile1
inBlueZ 5.44
。當通過 DBus 方法連接新設備時NewConnection
,我們會得到一個文件描述符。我很困惑這個文件描述符處於什麼狀態,以及我需要做什麼才能從中讀取/寫入。簡單地呼叫read
/write
對我來說並不像預期的那樣。在文件test/test-profile中,我看到了這行 python 程式碼:
self.fd = fd.take()
我正在努力尋找與該
take
方法等效的 Linux C。有關如何在 C 程式碼中配置此 fd 以便我可以使用 fd 讀/寫的任何建議將非常有幫助!謝謝
我的問題最終出在
gdbus-codegen
我使用的工具上。使用該工具時,每個 fd 參數實際上是一個GUnixFDList
(關於該對象的文件)的索引。為了讓GUnixFDList
該方法通過NewConnection
,我不得不將 xml 中的方法註釋為org.gtk.GDBus.C.UnixFD
. 可以在此處找到註釋文件。