READ(2)             UNIX Programmer's Manual		  READ(2)

     read, readv - read input

     cc = read(d, buf, nbytes)
     int cc, d;
     char *buf;
     unsigned short nbytes;

     #include <sys/types.h>
     #include <sys/uio.h>

     cc = readv(d, iov, iovcnt)
     int cc, d;
     struct iovec *iov;
     int iovcnt;

     Read attempts to read nbytes of data from the object refer-
     enced by the descriptor d into the buffer pointed to by buf.
     Readv performs the same action, but scatters the input data
     into the iovcnt buffers specified by the members of the iov
     array: iov[0], iov[1], ..., iov[iovcnt-1].

     For readv, the iovec structure is defined as

	  struct iovec {
	       caddr_t	 iov_base;
	       u_short	 iov_len;

     Each iovec entry specifies the base address and length of an
     area in memory where data should be placed. Readv will
     always fill an area completely before proceeding to the

     On objects capable of seeking, the read starts at a position
     given by the pointer associated with d (see lseek(2)).  Upon
     return from read, the pointer is incremented by the number
     of bytes actually read.

     Objects that are not capable of seeking always read from the
     current position.	The value of the pointer associated with
     such an object is undefined.

     Upon successful completion, read and readv return the number
     of bytes actually read and placed in the buffer.  The system
     guarantees to read the number of bytes requested if the
     descriptor references a normal file that has that many bytes
     left before the end-of-file, but in no other case.

Printed 11/26/99	 August 1, 1987                         1

READ(2)             UNIX Programmer's Manual		  READ(2)

     If the returned value is 0, then end-of-file has been

     If successful, the number of bytes actually read is
     returned.	Otherwise, a -1 is returned and the global vari-
     able errno is set to indicate the error.

     Read and readv will fail if one or more of the following are

     [EBADF]	    D is not a valid file or socket descriptor
		    open for reading.

     [EFAULT]	    Buf points outside the allocated address

     [EIO]	    An I/O error occurred while reading from the
		    file system.

     [EINTR]	    A read from a slow device was interrupted
		    before any data arrived by the delivery of a

     [EINVAL]	    The pointer associated with d was negative.

     [EWOULDBLOCK]  The file was marked for non-blocking I/O, and
		    no data were ready to be read.

     In addition, readv may return one of the following errors:

     [EINVAL]	    Iovcnt was less than or equal to 0, or
		    greater than 16.

     [EINVAL]	    The sum of the iov_len values in the iov
		    array overflowed a short.

     [EFAULT]	    Part of the iov points outside the process's
		    allocated address space.

     dup(2), fcntl(2), open(2), pipe(2), select(2), socket(2),

Printed 11/26/99	 August 1, 1987                         2

Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 1305
Valid CSS Valid XHTML 1.0 Strict