【问题标题】:How do I send a Unix file descriptor using sdbus?如何使用 sdbus 发送 Unix 文件描述符?
【发布时间】:2016-11-29 15:06:09
【问题描述】:

我正在尝试使用 sdbus(sd-bus?)创建一个 dbus 服务,该服务将以代表套接字的 fd 进行响应。

我的客户能够接收字符串和整数,所以我已经涵盖了基础知识。我正在寻找的是如何在响应消息中将 fd 打包为“h”类型。

【问题讨论】:

  • 您知道文件描述符对于创建它们的进程是本地的,是吗??
  • @Olaf 是的,谢谢。我被承诺在 dbus 应该提供的进程之间进行一些神奇的编组。试图找出如何调用魔法。
  • 您可以在Sending file descriptor by Linux socket 中找到有关在进程之间传输文件描述符所需的原始机制的讨论。不过,我不确定这与 sdbus 有什么关系。

标签: c linux dbus systemd


【解决方案1】:

似乎不需要魔法。

服务器创建套接字并以最明显的方式(伪代码)回复客户端:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多