NAME
readv, writev - read or write a vector
SYNOPSIS
#include <sys/uio.h>
int readv(int fd, const struct iovec * vector, size_t count
int writev(int fd, const struct iovec * vector, size_t count
struct iovec {
__ptr_t iov_base; /* Starting address. */
size_t iov_len; /* Length in bytes. */
};
DESCRIPTION
readv reads data from file descriptor fd, and puts the
result in the buffers described by vector. The number of
buffers is specified by count. The buffers are filled in the
order specified. Operates just like read except that data
is put in vector instead of a contiguous buffer.
writev writes data to file descriptor fd, and from the
buffers described by vector. The number of buffers is speci-
fied by count. The buffers are used in the order specified.
Operates just like write except that data is taken from vec-
tor instead of a contiguous buffer.
RETURN VALUE
On success readv returns the number of bytes read. On suc-
cess writev returns the number of bytes written. On error,
-1 is returned, and errno is set appropriately.
ERRORS
EINVAL An invalid argument was given. For instance count
might be greater than MAX_IOVEC, or zero. fd could
also be attached to an object which is unsuitable
for reading (for readv) or writing (for writev).
EFAULT "Segmentation fault." Most likely vector or some of
the iov_base pointers points to memory that is not
properly allocated.
EBADF The file descriptor fd is not valid.
EINTR The call was interrupted by a signal before any data
was read/written.
EAGAIN Non-blocking I/O has been selected using O_NONBLOCK
and no data was immediately available for reading.
(Or the file descriptor fd is for an object that is
locked.)
EISDIR fd refers to a directory.
EOPNOTSUP
fd refers to a socket or device that does not sup-
port reading/writing.
Other errors may occur, depending on the object connected to
fd.
CONFORMING TO
4.4BSD (the readv and writev functions first appeared in BSD
4.2).
SEE ALSO
read(2), write(2), fprintf(3), fscanf(3)