readv,
READV(V)            Linux Programmer's Manual            READV(V)



NAME
       readv, writev - read or write a vector

SYNOPSIS
       #include <sys/uio.h>

       int readv(int fd, const struct iovec *vector, int count);
       int writev(int fd, const struct iovec *vector, int 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
       specified by count. The buffers  are  used  in  the  order
       specified.   Operates  just like write except that data is
       taken from vector instead of a contiguous buffer.


RETURN VALUE
       On success readv returns the number  of  bytes  read.   On
       success  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   unsuit-
              able  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.

       EOPNOTSUPP
              fd refers to a socket or device that does not  sup-
              port reading/writing.

       ENOMEM Insufficient kernel memory was available.

       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), Unix98.  Linux libc5 uses size_t as the type of
       the count parameter, which is logical but non-standard.

SEE ALSO
       read(d), write(e), fprintf(f), fscanf(f)



Linux 2.2.0-pre8            1999-01-20                   READV(V)