pipe – create an interprocess channel|
int pipe(int fd)
Pipe creates a buffered channel for interprocess I/O communication.
Two file descriptors are returned in fd. Data written to fd
is available for reading from fd and data written to fd
is available for reading from fd. |
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.
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
intro(2), read(2), pipe(3)|
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.