Commit | Line | Data |
---|---|---|
ea709105 C |
1 | .TH PIPE 2 "12 February 1983" |
2 | .UC 4 | |
3 | .SH NAME | |
4 | pipe \- create an interprocess communication channel | |
5 | .SH SYNOPSIS | |
6 | .nf | |
7 | .ft B | |
8 | pipe(fildes) | |
9 | int fildes[2]; | |
10 | .fi | |
11 | .ft R | |
12 | .SH DESCRIPTION | |
13 | The | |
14 | .I pipe | |
15 | system call | |
16 | creates an I/O mechanism called a pipe. | |
17 | The file descriptors returned can | |
18 | be used in read and write operations. | |
19 | When the pipe is written using the descriptor | |
20 | .IR fildes [1] | |
21 | up to 4096 bytes of data are buffered | |
22 | before the writing process is suspended. | |
23 | A read using the descriptor | |
24 | .IR fildes [0] | |
25 | will pick up the data. | |
26 | .PP | |
27 | It is assumed that after the | |
28 | pipe has been set up, | |
29 | two (or more) | |
30 | cooperating processes | |
31 | (created by subsequent | |
32 | .I fork | |
33 | calls) | |
34 | will pass data through the | |
35 | pipe with | |
36 | .I read | |
37 | and | |
38 | .I write | |
39 | calls. | |
40 | .PP | |
41 | The shell has a syntax | |
42 | to set up a linear array of processes | |
43 | connected by pipes. | |
44 | .PP | |
45 | Read calls on an empty | |
46 | pipe (no buffered data) with only one end | |
47 | (all write file descriptors closed) | |
48 | returns an end-of-file. | |
49 | .PP | |
50 | Pipes are really a special case of the | |
51 | .IR socketpair (2) | |
52 | call and, in fact, are implemented as such in the system. | |
53 | .PP | |
54 | A signal is generated if a write on a pipe with only one end is attempted. | |
55 | .SH "RETURN VALUE | |
56 | The function value zero is returned if the | |
57 | pipe was created; \-1 if an error occurred. | |
58 | .SH ERRORS | |
59 | The \fIpipe\fP call will fail if: | |
60 | .TP 15 | |
61 | [EMFILE] | |
62 | Too many descriptors are active. | |
63 | .TP 15 | |
64 | [EFAULT] | |
65 | The \fIfildes\fP buffer is in an invalid area of the process's address | |
66 | space. | |
67 | .SH "SEE ALSO" | |
68 | sh(1), read(2), write(2), fork(2), socketpair(2) | |
69 | .SH BUGS | |
70 | Should more than 4096 bytes be necessary in any | |
71 | pipe among a loop of processes, deadlock will occur. |