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 cross-
          connected I/O streams.  X/data and x/ctl are the data and
          control 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.

          Writes are atomic up to a certain size, typically 32768
          bytes, that is, each write will be delivered in a single
          read by the recipient, provided the receiving buffer is
          large enough.

          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 11/23/24)