Developer's Daily Unix by Example
  main | java | perl | unix | dev directory | web log
 
 
Main
Unix
Man Pages
   

READV

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
CONFORMING TO
SEE ALSO

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_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 support 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)


copyright 1998-2007, devdaily.com, all rights reserved.
devdaily.com, an alvin j. alexander production.