READV(2)            Linux Programmer's Manual            READV(2)

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
               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_NON-
               BLOCK  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.

       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(2), write(2), fprintf(3), fscanf(3)

Linux 2.2.0-pre8            1999-01-20                          1