|
|
1.1 root 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
1.1.1.2 ! root 54: If you attempt a write on a pipe with only one end, a signal is generated.
1.1 root 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
1.1.1.2 ! root 59: The \fIpipe\fP call fails if:
1.1 root 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
1.1.1.2 ! root 71: pipe among a loop of processes, deadlock occurs.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.