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 ALSOintro(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.
PIPE(2)