0
我正在嘗試使用sdbus(sd-bus?)創建一個dbus服務,它將使用代表套接字的fd進行響應。如何使用sdbus發送Unix文件描述符?
我的客戶端能夠接收字符串和整數,所以我介紹了基礎知識。我正在尋找的是如何在響應消息中將fd打包爲「h」類型。
我正在嘗試使用sdbus(sd-bus?)創建一個dbus服務,它將使用代表套接字的fd進行響應。如何使用sdbus發送Unix文件描述符?
我的客戶端能夠接收字符串和整數,所以我介紹了基礎知識。我正在尋找的是如何在響應消息中將fd打包爲「h」類型。
似乎沒有必要的魔法。
服務器創建插座並回復客戶端的最明顯的方法(僞代碼):
fd = socket(AF_UNIX, SOCK_STREAM, 0);
sd_bus_reply_method_return(message, "h", fd);
客戶端只是要DUP()傳入的FD,然後能夠訪問它:
int fd;
int dup_fd;
sd_bus_message_read(message, "h", &fd);
dup_fd = dup(fd);
你知道文件描述符是創建它們的過程的本地,你? – Olaf
@Olaf Yup,謝謝。我已經承諾在dbus應該提供的進程之間進行一些神奇的編組。試圖找出如何調用魔術。 – mabac
您可以在[在Linux套接字中發送文件描述符]中找到在進程之間傳輸文件描述符所需的原始機制的討論(http://stackoverflow.com/questions/28003921/sending-file-descriptor-by-linux-socket )。不過,我不確定這與sdbus有什麼聯繫。 –