PIPE(3)                                                   PIPE(3)

     NAME
          pipe - two-way interprocess communication

     SYNOPSIS
          bind #| dir

          dir/data
          dir/ctl
          dir/data1
          dir/ctl1

     DESCRIPTION
          An attach(5) of this device allocates two new streams joined
          at the device end.  X/data and x/ctl are the data and con-
          trol channels of one stream and x/data1 and x/ctl1 are the
          data and control channels of the other stream.

          Data written to one channel becomes available for reading at
          the other.  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.

          Written data is buffered in kernel stream blocks.  The
          writer will block once the stream is full, typically after
          32768 bytes or 16 writes.  The writer will resume once the
          stream is less than half full.

          If there are multiple writers, each write is guaranteed to
          be available in a contiguous piece at the other end of the
          pipe.  If there are multiple readers, each read will return
          data from only one write.

          The pipe(2) system call performs an attach of this device
          and returns file descriptors to the new pipe's data and
          data1 files.  The files are open with mode ORDWR.

     SEE ALSO
          pipe(2)

     SOURCE
          /sys/src/9/port/devpipe.c

     Page 1                       Plan 9            (printed 12/30/24)