mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
Binary-only compiler and library, plus documentation and include files for compiling new programs.
199 lines
5.0 KiB
Plaintext
Executable File
199 lines
5.0 KiB
Plaintext
Executable File
|
|
|
|
|
|
READ(2V) SYSTEM CALLS READ(2V)
|
|
|
|
|
|
|
|
NAME
|
|
read, readv - read input
|
|
|
|
SYNOPSIS
|
|
cc = read(d, buf, nbytes)
|
|
int cc, d;
|
|
char *buf;
|
|
int nbytes;
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/uio.h>
|
|
|
|
cc = readv(d, iov, iovcnt)
|
|
int cc, d;
|
|
struct iovec *iov;
|
|
int iovcnt;
|
|
|
|
DESCRIPTION
|
|
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;
|
|
int 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
|
|
next.
|
|
|
|
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 which has that many
|
|
bytes left before the end-of-file, but in no other case.
|
|
|
|
|
|
|
|
|
|
|
|
Sun Release 3.4 Last change: 25 July 1986 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
READ(2V) SYSTEM CALLS READ(2V)
|
|
|
|
|
|
|
|
If the returned value is 0, then end-of-file has been
|
|
reached.
|
|
|
|
When attempting to read from a descriptor associated with an
|
|
empty pipe, socket, or FIFO:
|
|
|
|
If O_NDELAY is set, the read will return a -1 and errno
|
|
will be set to EWOULDBLOCK.
|
|
|
|
If O_NDELAY is clear, the read will block until data is
|
|
written to the pipe or the file is no longer open for
|
|
writing.
|
|
|
|
When attempting to read from a descriptor associated with a
|
|
tty that has no data currently available:
|
|
|
|
If O_NDELAY is set, the read will return a -1 and errno
|
|
will be set to EWOULDBLOCK.
|
|
|
|
If O_NDELAY is clear, the read will block until data
|
|
becomes available.
|
|
|
|
If O_NDELAY is set, and less data are available than are
|
|
requested by the read or readv, only the data that are
|
|
available are returned, and the count indicates how many
|
|
bytes of data were actually read.
|
|
|
|
SYSTEM V DESCRIPTION
|
|
When an attempt is made to read a descriptor which is in
|
|
no-delay mode, and there is no data currently available,
|
|
read will return a 0 instead of returning a -1 and setting
|
|
errno to EWOULDBLOCK. Note that this is indistinguishable
|
|
from end-of-file.
|
|
|
|
RETURN VALUE
|
|
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.
|
|
|
|
ERRORS
|
|
read and readv will fail if one or more of the following are
|
|
true:
|
|
|
|
EBADF d is not a valid file descriptor open for
|
|
reading.
|
|
|
|
EISDIR d refers to a directory which is on a file
|
|
system mounted using the NFS.
|
|
|
|
EFAULT buf points outside the allocated address
|
|
space.
|
|
|
|
|
|
|
|
|
|
Sun Release 3.4 Last change: 25 July 1986 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
READ(2V) SYSTEM CALLS READ(2V)
|
|
|
|
|
|
|
|
EIO An I/O error occurred while reading from or
|
|
writing to the file system.
|
|
|
|
EINTR A read from a slow device was interrupted
|
|
before any data arrived by the delivery of a
|
|
signal.
|
|
|
|
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 One of the iov_len values in the iov array
|
|
was negative.
|
|
|
|
EINVAL The sum of the iov_len values in the iov
|
|
array overflowed a 32-bit integer.
|
|
|
|
EFAULT Part of iov points outside the process's
|
|
allocated address space.
|
|
|
|
SEE ALSO
|
|
dup(2), fcntl(2), open(2), pipe(2), select(2), socket(2),
|
|
socketpair(2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sun Release 3.4 Last change: 25 July 1986 3
|
|
|
|
|
|
|