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