Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fork(2)

read(2)

sh(1sh)

socketpair(2)

write(2)



PIPE(2)                 COMMAND REFERENCE                 PIPE(2)



NAME
     pipe - create an interprocess communication channel

SYNOPSIS
     pipe(fd)
     int fd[2];

DESCRIPTION
     The pipe system call creates an I/O mechanism called a pipe.
     Then executed, the command returns two file descriptors in
     fd[]; fd[0] is opened for reading, and fd[1] is opened for
     writing.  When the pipe is written using fd[1] up to
     MINBSIZE (defined in <sys/fs.h>) bytes of data are buffered
     before the writing process is blocked.  A read using fd[0]
     picks up the data.

     It is assumed that after the pipe has been set up, two (or
     more) cooperating processes (created by subsequent fork(2)
     calls) pass data through the pipe with read(2) and write(2)
     calls.

     The shell has a syntax to set up a linear array of processes
     connected by pipes.  See sh(1SH).

     Calls from read call on an empty pipe (no buffered data)
     with only one end (all write file descriptors closed) return
     an end-of-file.

     The pipe system call is really a special case of the
     socketpair(2) call and, in fact, is implemented as such in
     the system.

     A signal (SIGPIPE) is generated if a write on a pipe with
     only one end is attempted.

DIAGNOSTICS
     The pipe call fails if:

     [EMFILE]     More than NOFILE - 2 (defined in <sys/max.h>)
                  descriptors are already open in this process.

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

     [ENFILE]     The system file table is full.

     [ENOBUF]     No buffer space is available for the pipe.

RETURN VALUE
     Upon successful completion, a value of 0 is returned.
     Otherwise, a value of -1 is returned and errno is set to
     indicate the error.



Printed 5/12/88                                                 1





PIPE(2)                 COMMAND REFERENCE                 PIPE(2)



CAVEATS
     Should more than 4096 bytes be necessary in any pipe among a
     loop of processes, deadlock occurs.

SEE ALSO
     fork(2), read(2), sh(1sh), socketpair(2), and write(2).

















































Printed 5/12/88                                                 2



%%index%%
na:240,103;
sy:343,290;
de:633,1660;
di:2293,596;
rv:2889,279;
ca:3480,226;
se:3706,250;
%%index%%000000000122

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026