readv, writev - записывают и считывают данные из нескольких буферов
НАЗВАНИЕreadv, writev - записывают и считывают данные из
нескольких буферов
СИНТАКСИС
#include
int readv(int filedes, const struct iovec *vector,
size_t count);
int writev(int filedes, const struct iovec *vector,
size_t count);
ОПИСАНИЕ
Функция readv() cчитывает count блоков из файла,
ассоциированного с описателем filedes, в несколько
буферов, описанных в vector.
Функция writev() записывает минимум count блоков,
описанных в vector, в файл, ассоциированный с описателем
filedes.
vector указывает на структуру structiovec, заданную в
как
struct iovec {
void *iov_base; /* Начальный адрес */
size_t iov_len; /* Количество байтов */
};
Буферы обрабатываются в следующем порядке: vector[0], vec-
tor[1], ... vector[count].
Функция readv() работает так же, как и read(2), за
исключением того, что заполняет несколько буферов.
Функция writev() работает так же, как и write(2), за
исключением того, что будет записано несколько буферов.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция readv() возвращает количество байтов или -1 в
случае ошибки; функция writev() возвращает количество
записанных байтов.
КОДЫ ОШИБОК
Функции readv() и writev() могут завершиться ошибкой и
установить одно из следующих значений errno:
EBADF ( fd - это некорректный описатель файла);
EINVAL ( fd невозможно прочитать readv() или записать
writev());
EFAULT ( buf находится за пределами адресного пространства
процесса);
EAGAIN (при вызове open() были выбраны неблокирующиеся
операции ввода/вывода, поэтому чтение или запись не
могут быть выполнены немедленно);
EINTR (чтение или запись были прерваны до передачи
данных).
СООТВЕТСТВИЕ СТАНДАРТАМ
Неизвестно.
НАЙДЕННЫЕ ОШИБКИ
Не следует смешивать вызовы к функциям, таким, как readv()
или writev(), которые действуют на файловых описателях, с
функциями библиотеки stdio, поскольку результат этого
непредсказуем.