错误:“struct msghdr”没有名为“msg_accrights”的成员是编译 C 程序时的消息

错误:“struct msghdr”没有名为“msg_accrights”的成员是编译 C 程序时的消息

从 Sun Solaris 迁移到 RHEL。但编译C程序时出现以下错误。

struct msghdr msg;

    msg.msg_accrights = (caddr_t)&fd_to_send;
    msg.msg_accrightslen = sizeof(int);

error: 'struct msghdr' has no member named 'msg_accrights'

error: 'struct msghdr' has no member named 'msg_accrightslen'

Linux 设置运行内核 2.6.18-419.el5。

答案1

您的 Solaris 代码使用 4.3BSD 风格的消息; Linux用途4.4BSD风格的消息, 与msg_controlmsg_controllenstruct cmsg代替msg_accrights

您需要修改代码以使用中描述的方法传递文件描述符如何使用 sendmsg() 通过套接字在两个进程之间发送文件描述符?

相关内容