Как вы знаете, sendmsg имеет следующее объявление:
int sendmsg(int s, const struct msghdr *msg, int flags);
и структура msghdr имеет следующий вид:
struct msghdr {
void * msg_name; /* optional address */
socklen_t msg_namelen; /* size of address */
struct iovec * msg_iov; /* scatter/gather array */
size_t msg_iovlen; /* # elements in msg_iov */
void * msg_control; /* ancillary data, see below */
socklen_t msg_controllen; /* ancillary data buffer len */
int msg_flags; /* flags on received message */
};
Как вы видите, msghdr имеет массив буферов, iovec и счетчик буферов msg_iovlen. Что мне интересно, так это то, как sendmsg отправляет эти буферы. Он объединяет все буферы и отправляет или отправляет в цикле for?