READ(2)READ(2)NAME
read, readn, write, pread, pwrite - read or write file
SYNOPSIS
#include <u.h>
#include <libc.h>
long read(int fd, void *buf, long nbytes)
long readn(int fd, void *buf, long nbytes)
long write(int fd, void *buf, long nbytes)
long pread(int fd, void *buf, long nbytes, vlong offset)
long pwrite(int fd, void *buf, long nbytes, vlong offset)
DESCRIPTION
Read reads nbytes bytes of data from the offset in the file associated
with fd into memory at buf. The offset is advanced by the number of
bytes read. It is not guaranteed that all 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.
Readn is just like read, but does successive read calls until nbytes
have been read, or a read system call returns a non-positive count.
Write writes nbytes bytes of data starting at buf to the file associ‐
ated with 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.
Pread and Pwrite are equivalent to a seek(2) to offset followed by a
read or write. By combining the operations in a single atomic call,
they more closely match the 9P protocol (see intro(5)) and, more impor‐
tant, permit multiprocess programs to execute multiple concurrent read
and write operations on the same file descriptor without interference.
SOURCE
/sys/src/libc/9syscall
/sys/src/libc/port/readn.c
SEE ALSOintro(2), dirread(2), dup(2), open(2), pipe(2), readv(2)DIAGNOSTICS
These functions set errstr.
READ(2)