当前位置: 代码网 > 服务器>服务器>Linux > Linux开发:进程间通过Unix Domain Socket传递文件描述符

Linux开发:进程间通过Unix Domain Socket传递文件描述符

2024年08月06日 Linux 我要评论
msg_iov和msg_iovlen,指向一个struct iovec类型的数组,用于要保存要传递的数据,由于没有实际的数据要传递,所以sendFd让其指向了一个空的struct iovec e = {NULL, 0};实际上当需要传递大量的数据时,可以通过UDS直接传递文件描述符,这样接收文件描述符的一方,可以直接从传递过来的文件描述符读取数据。这个宏可以传入要发送的控制信息的长度,获取包含控制信息头的完整长度,但不包含padding的长度。设置了msghdr的控制信息指向的地址,以及控制信息的长度。

实际上当需要传递大量的数据时,可以通过uds直接传递文件描述符,这样接收文件描述符的一方,可以直接从传递过来的文件描述符读取数据

先举例说明:

//uds_fd.hpp
#pragma once
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <string>
#include <iostream>
#include <filesystem>

using namespace std;
namespace fs = std::filesystem;

class udsfd{
public:
    udsfd()
    {
        //创建基于数据包的通信,类似udp
        m_sockfd = socket(af_unix, sock_dgram, 0);
        if(m_sockfd == -1)
        {
            cout << "create socket failed" <<endl;
        }
    }

    int bindfile(const string& sockfilepath)
    {
        if(m_sock
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com