c - 如何使用 sdbus 发送 Unix 文件描述符?

标签 c linux dbus systemd

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

我的客户端能够接收字符串和整数,所以我已经掌握了基础知识。我正在寻找的是如何将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);

关于c - 如何使用 sdbus 发送 Unix 文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40869161/

相关文章:

c - 是否有 C 的库存储库?

c - 保留执行管道

linux - 遍历任意深度的目录

php - Raspberry Pi/MS SQL Server 交互

C DBus : Fails when calling method returning string

c++ - 以 C 风格编写 C++ 代码

c - 在c中识别并打印货币符号

linux - pthread_sigmask 无法与 aio 回调线程一起正常工作

c++ - 如何接收使用 dbus 作为信号发送的结构?

qt - 在路径/org/freedesktop/NetworkManager/ActiveConnection/的对象上没有这样的接口(interface) 'org.freedesktop.DBus.Properties'