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)