Функция readv()
cчитывает
count
блоков из файла, ассоциированного с описателем
filedes,
в несколько буферов, описанных в
vector.
Функция
writev()
записывает минимум
count
блоков, описанных в
vector,
в файл, ассоциированный с описателем
filedes.
vector
указывает на структуру
structiovec,
заданную в
<sys/uio.h>
как
struct iovec {
void *iov_base; /* Начальный адрес */
size_t iov_len; /* Количество байтов */
};
Буферы обрабатываются в следующем порядке:
vector[0], vector[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, поскольку результат этого непредсказуем.