glenda.party
term% ls -F
term% pwd
$home/manuals/9front/2/pipe
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 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.



                                                                       PIPE(2)