Как работает sendmsg?

Как вы знаете, 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?

13
задан skaffman 23 November 2010 в 17:17
поделиться