从 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_control
和msg_controllen
和struct cmsg
代替msg_accrights
。
您需要修改代码以使用中描述的方法传递文件描述符如何使用 sendmsg() 通过套接字在两个进程之间发送文件描述符?