Записать последовательность байт в файл
#include <sys/uio.h>ssize_t writev( int fildes,const iov_t *iov,int iovcnt );
libc
Функция writev() аналогична write(), но получает данные из iovcnt областей памяти, указанных в полях массива iov[0], iov[1], ..., iov[iovcnt - 1].
Функция writev() всегда записывает область целиком, прежде чем переходить к следующей.
Максимальное количество элементов в массиве iov равно UIO_MAXIOV
.
![]() | Стоит принимать во внимание, что writev() игнорирует рекомендуемые блокировки, которые могут быть установлены функцией fcntl(). |
Если writev() прерывается сигналом до записи данных, функция возвращает значение -1
, и устанавливает errno в EINTR
. Однако, если writev() прерывается сигналом после успешной записи части данных, функция возвращает количество записанных байт.
Для более подробной информации см. the write().
Количество записанных байт.
Если возникла ошибка функция возвращает -1
, код ошибки записывается в errno.
O_NONBLOCK
установлен для файлового дескриптора, процесс будет задержан при операции записи. 0
, а начальная позиция больше или равна максимальному смещения, установленному в описании открытого файла. 0
, или больше UIO_MAXIOV
. SIGPIPE
также был послан процессу. POSIX 1003.1 X/Open Systems Interfaces Extension
iov_t, close(), creat(), dup(), dup2(), errno, fcntl(), lseek(), open(), pipe(), read(), readv(), select(), write()
Предыдущий раздел: Описание API системной библиотеки