NAME
|
NAME
|
read - read from a file descriptor
|
read - read from a file descriptor
|
|
|
SYNOPSIS
|
SYNOPSIS
|
ssize_t read(int fd, void *buf, size_t count);
|
ssize_t read(int fd, void *buf, size_t count);
|
|
|
DESCRIPTION
|
DESCRIPTION
|
read() attempts to read up to count bytes from file
|
read() attempts to read up to count bytes from file
|
descriptor fd into the buffer starting at buf.
|
descriptor fd into the buffer starting at buf.
|
|
|
If count is zero, read() returns zero and has no other
|
If count is zero, read() returns zero and has no other
|
results.
|
results.
|
|
|
|
|
RETURN VALUE
|
RETURN VALUE
|
On success, the number of bytes read is returned (zero
|
On success, the number of bytes read is returned (zero
|
indicates end of file), and the file position is advanced
|
indicates end of file), and the file position is advanced
|
by this number. It is not an error if this number is
|
by this number. It is not an error if this number is
|
smaller than the number of bytes requested; this may hap-
|
smaller than the number of bytes requested; this may hap-
|
pen for example because fewer bytes are actually available
|
pen for example because fewer bytes are actually available
|
right now (maybe because we were close to end-of-file, or
|
right now (maybe because we were close to end-of-file, or
|
because we are reading from a pipe, or from a terminal),
|
because we are reading from a pipe, or from a terminal),
|
or because read() was interrupted by a signal. On error,
|
or because read() was interrupted by a signal. On error,
|
-1 is returned, and errno is set appropriately. In this
|
-1 is returned, and errno is set appropriately. In this
|
case it is left unspecified whether the file position (if
|
case it is left unspecified whether the file position (if
|
any) changes.
|
any) changes.
|
|
|
ERRORS
|
ERRORS
|
EINTR The call was interrupted by a signal before any
|
EINTR The call was interrupted by a signal before any
|
data was read.
|
data was read.
|
|
|
EAGAIN Non-blocking I/O has been selected using O_NON-
|
EAGAIN Non-blocking I/O has been selected using O_NON-
|
BLOCK and no data was immediately available for
|
BLOCK and no data was immediately available for
|
reading.
|
reading.
|
|
|
EIO I/O error. This will happen for example when the
|
EIO I/O error. This will happen for example when the
|
process is in a background process group, tries to
|
process is in a background process group, tries to
|
read from its controlling tty, and either it is
|
read from its controlling tty, and either it is
|
ignoring or blocking SIGTTIN or its process group
|
ignoring or blocking SIGTTIN or its process group
|
is orphaned. It may also occur when there is a
|
is orphaned. It may also occur when there is a
|
low-level I/O error while reading from a disk or
|
low-level I/O error while reading from a disk or
|
tape.
|
tape.
|
|
|
EISDIR fd refers to a directory.
|
EISDIR fd refers to a directory.
|
|
|
EBADF fd is not a valid file descriptor or is not open
|
EBADF fd is not a valid file descriptor or is not open
|
for reading.
|
for reading.
|
|
|
EINVAL fd is attached to an object which is unsuitable
|
EINVAL fd is attached to an object which is unsuitable
|
for reading.
|
for reading.
|
|
|
Other errors may occur, depending on the object connected
|
Other errors may occur, depending on the object connected
|
to fd. POSIX allows a read that is interrupted after
|
to fd. POSIX allows a read that is interrupted after
|
reading some data to return -1 (with errno set to EINTR)
|
reading some data to return -1 (with errno set to EINTR)
|
or to return the number of bytes already read.
|
or to return the number of bytes already read.
|
|
|