Linux

在 C 中對 BlueZ 提供的文件描述符進行操作

  • August 11, 2017

我正在嘗試使用org.bluez.Profile1in BlueZ 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. 可以在此處找到註釋文件。

引用自:https://unix.stackexchange.com/questions/385074