glenda.party
term% ls -F
term% cat index.txt
PIPE(2)                       System Calls Manual                      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 gen‐
       erate 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.

                                                                       PIPE(2)