struct mmsghdr
中的这三个成员之一:
void *msg_control; /* ancillary data, see below */
size_t msg_controllen; /* ancillary data buffer len */
int msg_flags; /* flags on received message */
导致问题:sendmmsg()
返回 -1,"没有可用的缓冲区"。
memset(&(Msgs),0,sizeof(struct mmsghdr));
问题消失后。
其中一个手册页说msg_flags
被忽略了,那么msg_control
把事情搞砸了吗?
可能你已经采用了这个结构的局部变量。 默认情况下,局部变量使用垃圾初始化,从而导致此问题。 您甚至可以通过使用相同的全局变量来尝试此操作。