IEEE Std 1003.1-2008的<sys/socket.h>
部分不提供 CMSG_SPACE 或 CMSG_LEN 宏,而只是说:
辅助数据由一系列对组成,每个对由一个 cmsghdr 结构和一个数据数组组成。
是否有一种可移植的方式来分配没有 CMSG_SPACE 的辅助数据,或者在没有 CMSG_LEN 的情况下将辅助数据附加到消息中?该引用向我表明,单个缓冲区的大小(sizeof(struct cmsghdr)+ sizeof data)*nr_of_pairs
(当然,每对数据可能会更改),每个cmgshdr.cmsglen = sizeof(struct cmsghdr) + sizeof data
人和msg.msg_controllen = (sizeof(struct cmsghdr)+ sizeof data)*nr_of_pairs
CMSG_SPACE/CMSG_LEN 的所有系统特定文档都表明可能存在对齐问题这种方式。