.TH READ 3
.SH NAME
read, readn, write, pread, pwrite \- read or write file
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.B
long read(int fd, void *buf, long nbytes)
.PP
.B
long readn(int fd, void *buf, long nbytes)
.PP
.B
long write(int fd, void *buf, long nbytes)
.PP
.B
long pread(int fd, void *buf, long nbytes, vlong offset)
.PP
.B
long pwrite(int fd, void *buf, long nbytes, vlong offset)
.SH DESCRIPTION
.I Read
reads
.I nbytes
bytes of data
from the offset in the file associated with
.I fd
into memory at
.IR buf .
The offset is advanced by the number of bytes read.
It is not guaranteed
that all
.I nbytes
bytes will be read; for example
if the file refers to the console, at most one line
will be returned.
In any event the number of bytes read is returned.
A return value of
0 is conventionally interpreted as end of file.
.PP
.I Readn
is just like read, but does successive
.I read
calls until
.I nbytes
have been read, or a read system call
returns a non-positive count.
.PP
.I Write
writes
.I nbytes
bytes of data starting at
.I buf
to the file associated with
.I fd
at the file offset.
The offset is advanced by the number of bytes written.
The number of characters actually written is returned.
It should be regarded as an error
if this is not the same as requested.
.PP
.I Pread
and
.I Pwrite
equivalent to a
.IR seek (3)
to
.I offset
followed by a
.I read
or
.IR write .
By combining the operations in a single atomic call, they more closely
match the 9P protocol
(see
.IR intro (9p))
and, more important,
permit multiprocess programs to execute multiple concurrent
read and write operations on the same file descriptor
without interference.
.SH SOURCE
.B \*9/src/lib9/readn.c
.SH SEE ALSO
.IR intro (3),
.IR open (3), 
.IR dup (3),
.IR pipe (3)
.SH DIAGNOSTICS
These functions set
.IR errstr .
