C - sendmmsg() 返回 -1,没有可用的缓冲区空间,为什么 memset 解决这个问题?



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

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

相关内容

  • 没有找到相关文章

最新更新