PIPE(2)PIPE(2)
NAME
pipe – create an interprocess channel
SYNOPSIS
#include <u.h>
#include <libc.h>
int pipe(int fd[2])
DESCRIPTION
Pipe
creates a buffered channel for interprocess I/O communication.
Two file descriptors are returned in
fd.
Data written to
fd[1]
is available for reading from
fd[0]
and data written to
fd[0]
is available for reading from
fd[1].
After the pipe has been established,
cooperating processes
created by subsequent
fork(2)
calls may pass data through the
pipe with
read
and
write
calls.
The bytes placed on a pipe
by one
write
are contiguous even if many processes are writing.
Write boundaries are preserved: each read terminates
when the read buffer is full or after reading the last byte
of a write, whichever comes first.
The number of bytes available to a
read(2)
is reported
in the
Length
field returned by
fstat
or
dirfstat
on a pipe (see
stat(2)).
When all the data has been read from a pipe and the writer has closed the pipe or exited,
read(2)
will return 0 bytes. Writes to a pipe with no reader will generate a note
sys: write on closed pipe .
SOURCE
/sys/src/libc/9syscall
SEE
intro(2),
read(2),
pipe(3)
DIAGNOSTICS
Sets
errstr.
BUGS
If a read or a write of a pipe is interrupted, some unknown
number of bytes may have been transferred.
When a read from a pipe returns 0 bytes, it usually means end of file
but is indistinguishable from reading the result of an explicit
write of zero bytes.