1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
.TH "PIPE" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
.\" pipe
.SH NAME
pipe \- create an interprocess channel
.SH SYNOPSIS
.LP
\fB#include <unistd.h>
.br
.sp
int pipe(int\fP \fIfildes\fP\fB[2]);
.br
\fP
.SH DESCRIPTION
.LP
The \fIpipe\fP() function shall create a pipe and place two file descriptors,
one each into the arguments \fIfildes\fP[0] and
\fIfildes\fP[1], that refer to the open file descriptions for the
read and write ends of the pipe. Their integer values shall be
the two lowest available at the time of the \fIpipe\fP() call. The
O_NONBLOCK and FD_CLOEXEC flags shall be clear on both file
descriptors. (The \fIfcntl\fP() function can be used to set both these
flags.)
.LP
Data can be written to the file descriptor \fIfildes\fP[1] and read
from the file descriptor \fIfildes\fP[0]. A read on the
file descriptor \fIfildes\fP[0] shall access data written to the file
descriptor \fIfildes\fP[1] on a first-in-first-out basis.
It is unspecified whether \fIfildes\fP[0] is also open for writing
and whether \fIfildes\fP[1] is also open for reading.
.LP
A process has the pipe open for reading (correspondingly writing)
if it has a file descriptor open that refers to the read end,
\fIfildes\fP[0] (write end, \fIfildes\fP[1]).
.LP
Upon successful completion, \fIpipe\fP() shall mark for update the
\fIst_atime\fP, \fIst_ctime\fP, and \fIst_mtime\fP fields
of the pipe.
.SH RETURN VALUE
.LP
Upon successful completion, 0 shall be returned; otherwise, -1 shall
be returned and \fIerrno\fP set to indicate the error.
.SH ERRORS
.LP
The \fIpipe\fP() function shall fail if:
.TP 7
.B EMFILE
More than {OPEN_MAX} minus two file descriptors are already in use
by this process.
.TP 7
.B ENFILE
The number of simultaneously open files in the system would exceed
a system-imposed limit.
.sp
.LP
\fIThe following sections are informative.\fP
.SH EXAMPLES
.LP
None.
.SH APPLICATION USAGE
.LP
None.
.SH RATIONALE
.LP
The wording carefully avoids using the verb "to open" in order to
avoid any implication of use of \fIopen\fP(); see also \fIwrite\fP()
\&.
.SH FUTURE DIRECTIONS
.LP
None.
.SH SEE ALSO
.LP
\fIfcntl\fP() , \fIread\fP() , \fIwrite\fP() , the
Base Definitions volume of IEEE\ Std\ 1003.1-2001, \fI<fcntl.h>\fP,
\fI<unistd.h>\fP
.SH COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
-- Portable Operating System Interface (POSIX), The Open Group Base
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
Electrical and Electronics Engineers, Inc and The Open Group. In the
event of any discrepancy between this version and the original IEEE and
The Open Group Standard, the original IEEE and The Open Group Standard
is the referee document. The original Standard can be obtained online at
http://www.opengroup.org/unix/online.html .
|