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 commu- nication. 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 termi- nates 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 ALSO 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. Page 1 Plan 9 (printed 12/26/24)