2.9BSD/usr/man/cat2/pipe.2

Compare this file to the similar file:
Show the results in this format:


PIPE(2)             UNIX Programmer's Manual              PIPE(2)

NAME
     pipe - create an interprocess channel

SYNOPSIS
     pipe(fildes)
     int fildes[2];

DESCRIPTION
     The _p_i_p_e system call creates an I/O mechanism called a pipe.
     The file descriptors returned can be used in read and write
     operations.  When the pipe is written using the descriptor
     _f_i_l_d_e_s[1] up to 4096 bytes of data are buffered before the
     writing process is suspended.  A read using the descriptor
     _f_i_l_d_e_s[0] will pick up the data.  Writes with a count of
     4096 bytes or less are atomic; no other process can inter-
     sperse data.

     It is assumed that after the pipe has been set up, two (or
     more) cooperating processes (created by subsequent _f_o_r_k
     calls) will pass data through the pipe with _r_e_a_d and _w_r_i_t_e
     calls.

     The Shell has a syntax to set up a linear array of processes
     connected by pipes.

     Read calls on an empty pipe (no buffered data) with only one
     end (all write file descriptors closed) returns an end-of-
     file.

SEE ALSO
     sh(1), fork(2), read(2), write(2)

ERRORS
     The _p_i_p_e call will fail if:

     [EMFILE]            Too many descriptors are active.

     [EFAULT]            The _f_i_l_d_e_s buffer is in an invalid area
                         of the process's allocated address
                         space.

BUGS
     Should more than 4096 bytes be necessary in any pipe among a
     loop of processes, deadlock will occur.

ASSEMBLER
     (pipe = 42.)
     sys pipe
     (read file descriptor in r0)
     (write file descriptor in r1)

Printed 5/21/83                                                 1