0
私はsdbus(sd-bus?)を使ってdbusサービスを作成しようとしています。これはソケットを表すfdで応答します。sdbusを使用してUnixファイル記述子を送信するにはどうすればよいですか?
私のクライアントは文字列とintを受け取ることができるので、私は基本をカバーしています。私が探しているのは、fdを応答メッセージの "h"タイプとしてパッケージ化する方法です。
私はsdbus(sd-bus?)を使ってdbusサービスを作成しようとしています。これはソケットを表すfdで応答します。sdbusを使用してUnixファイル記述子を送信するにはどうすればよいですか?
私のクライアントは文字列とintを受け取ることができるので、私は基本をカバーしています。私が探しているのは、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よ、ありがとう。私はdbusが提供するはずのプロセスの間にある程度の魔法のマーシャリングを約束してきました。マジックを呼び出す方法を見つけようとしています。 – mabac
プロセス間でファイルディスクリプタを転送するために必要な生のメカニズムについては、[Linuxソケットによるファイルディスクリプタの送信](http://stackoverflow.com/questions/28003921/sending-file-descriptor-by-linux-socket)を参照してください。 )。私はsdbusとどのように関係しているのか分かりません。 –