The
readv()
function reads
count
blocks from the file associated with the file descriptor
filedes
into the multiple buffers described by
vector.
The
writev()
function writes at most
count
blocks described by
vector
to the file associated with the file descriptor
filedes.
The pointer
vector
points to a
struct iovec
defined in
<sys/uio.h>
as
struct iovec {
void *iov_base; /* Starting address */
size_t iov_len; /* Number of bytes */
};
Buffers are processed in the order
vector[0], vector[1], ... vector[count].
The
readv()
function works just like
read(2)
except that multiple buffers are filled.
The
writev()
function works just like
write(2)
except that multiple buffers are written out.
RETURN VALUE
The
readv()
function returns the number of bytes or -1 on error; the
writev()
function returns the number of bytes written.
ERRORS
The
readv()
and
writev()
functions can fail and set
errno
to the following values:
EBADF
fd
is not a valid file descriptor.
EINVAL
fd
is unsuitable for reading (for
readv())
or writing (for
writev()).
EFAULT
buf
is outside the processes' address space.
EAGAIN
Non-blocking I/O had been selected in the
open()
call, and reading or writing could not be done immediately.
EINTR
Reading or writing was interrupted before any data was transferred.
CONFORMING TO
unknown
BUGS
It is not advisable to mix calls to functions like
readv() or writev(),
which operate on file descriptors, with the functions from the stdio
library; the results will be undefined and probably not what you want.