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 のシステム固有のドキュメントはすべて、配置の問題が発生する可能性があることを示唆しています。この方法。