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搞砸了吗?

最佳答案

可能您已采用此结构的局部变量。
默认情况下,局部变量会使用垃圾初始化,从而导致此问题。
您甚至可以通过使全局变量相同来尝试此操作。

07-24 09:43
查看更多