相关疑难解决方法(0)

通过Linux套接字发送文件描述符

我试图通过linux socket发送一些文件描述符,但它不起作用.我究竟做错了什么?一个人应该如何调试这样的东西?我尝试在可能的地方放置perror(),但他们声称一切正常.这是我写的:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <fcntl.h>

void wyslij(int socket, int fd)  // send fd by socket
{
    struct msghdr msg = {0};

    char buf[CMSG_SPACE(sizeof fd)];

    msg.msg_control = buf;
    msg.msg_controllen = sizeof buf;

    struct cmsghdr * cmsg = CMSG_FIRSTHDR(&msg);
    cmsg->cmsg_level = SOL_SOCKET;
    cmsg->cmsg_type = SCM_RIGHTS;
    cmsg->cmsg_len = CMSG_LEN(sizeof fd);

    *((int *) CMSG_DATA(cmsg)) = fd;

    msg.msg_controllen = cmsg->cmsg_len;  // why does example from man need it? isn't it redundant?

    sendmsg(socket, …
Run Code Online (Sandbox Code Playgroud)

c sockets linux file-descriptor

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

file-descriptor ×1

linux ×1

sockets ×1