我有一些代码片段,我通过netlink API 发送然后接收消息。
//...
struct msghdr msg = {0};
//...
// some other structures initialization
msg.msg_name = &sa;
msg.msg_namelen = sizeof sa;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
if(fd < 0) {
perror("SOCKET");
return -1;
}
if(sendmsg(fd, &msg, 0) < 0) {
perror("SENDMSG");
return -1;
}
iov.iov_base = buf;
iov.iov_len = sizeof buf;
/* Should I do this?
msg.msg_name = &sa;
msg.msg_namelen = sizeof sa;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
*/
int len = recvmsg(fd, &msg, 0);
所以问题是,我应该重新初始化msg
成员吗?还是从API的角度保证sendmsg()
不会破坏这些领域?不幸的是,我没有找到任何确认或否认。
很抱歉,如果很明显。