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
搞砸了吗?
可能您已采用此结构的局部变量。默认情况下,局部变量使用垃圾初始化,从而导致此问题。您甚至可以通过使用相同的全局变量来尝试此操作。