malloc_get_state.3: tfix
[man-pages.git] / man7 / pipe.7
blobd1fad9974c4544890a300c07097607ac2f92ea97
1 .\" Copyright (C) 2005 Michael Kerrisk <mtk.manpages@gmail.com>
2 .\"
3 .\" SPDX-License-Identifier: Linux-man-pages-copyleft
4 .\"
5 .TH pipe 7 (date) "Linux man-pages (unreleased)"
6 .SH NAME
7 pipe \- overview of pipes and FIFOs
8 .SH DESCRIPTION
9 Pipes and FIFOs (also known as named pipes)
10 provide a unidirectional interprocess communication channel.
11 A pipe has a
12 .I read end
13 and a
14 .IR "write end" .
15 Data written to the write end of a pipe can be read
16 from the read end of the pipe.
18 A pipe is created using
19 .BR pipe (2),
20 which creates a new pipe and returns two file descriptors,
21 one referring to the read end of the pipe,
22 the other referring to the write end.
23 Pipes can be used to create a communication channel between related
24 processes; see
25 .BR pipe (2)
26 for an example.
28 A FIFO (short for First In First Out) has a name within the filesystem
29 (created using
30 .BR mkfifo (3)),
31 and is opened using
32 .BR open (2).
33 Any process may open a FIFO, assuming the file permissions allow it.
34 The read end is opened using the
35 .B O_RDONLY
36 flag; the write end is opened using the
37 .B O_WRONLY
38 flag.
39 See
40 .BR fifo (7)
41 for further details.
42 .IR Note :
43 although FIFOs have a pathname in the filesystem,
44 I/O on FIFOs does not involve operations on the underlying device
45 (if there is one).
46 .SS I/O on pipes and FIFOs
47 The only difference between pipes and FIFOs is the manner in which
48 they are created and opened.
49 Once these tasks have been accomplished,
50 I/O on pipes and FIFOs has exactly the same semantics.
52 If a process attempts to read from an empty pipe, then
53 .BR read (2)
54 will block until data is available.
55 If a process attempts to write to a full pipe (see below), then
56 .BR write (2)
57 blocks until sufficient data has been read from the pipe
58 to allow the write to complete.
60 Nonblocking I/O is possible by using the
61 .BR fcntl (2)
62 .B F_SETFL
63 operation to enable the
64 .B O_NONBLOCK
65 open file status flag or by opening a
66 .BR fifo (7)
67 with
68 .BR O_NONBLOCK .
69 If any process has the pipe open for writing, reads fail with
70 .BR EAGAIN ;
71 otherwise\[em]with no potential writers\[em]reads succeed and return empty.
73 The communication channel provided by a pipe is a
74 .IR "byte stream" :
75 there is no concept of message boundaries.
77 If all file descriptors referring to the write end of a pipe
78 have been closed, then an attempt to
79 .BR read (2)
80 from the pipe will see end-of-file
81 .RB ( read (2)
82 will return 0).
83 If all file descriptors referring to the read end of a pipe
84 have been closed, then a
85 .BR write (2)
86 will cause a
87 .B SIGPIPE
88 signal to be generated for the calling process.
89 If the calling process is ignoring this signal, then
90 .BR write (2)
91 fails with the error
92 .BR EPIPE .
93 An application that uses
94 .BR pipe (2)
95 and
96 .BR fork (2)
97 should use suitable
98 .BR close (2)
99 calls to close unnecessary duplicate file descriptors;
100 this ensures that end-of-file and
101 .BR SIGPIPE / EPIPE
102 are delivered when appropriate.
104 It is not possible to apply
105 .BR lseek (2)
106 to a pipe.
107 .SS Pipe capacity
108 A pipe has a limited capacity.
109 If the pipe is full, then a
110 .BR write (2)
111 will block or fail, depending on whether the
112 .B O_NONBLOCK
113 flag is set (see below).
114 Different implementations have different limits for the pipe capacity.
115 Applications should not rely on a particular capacity:
116 an application should be designed so that a reading process consumes data
117 as soon as it is available,
118 so that a writing process does not remain blocked.
120 Before Linux 2.6.11, the capacity of a pipe was the same as
121 the system page size (e.g., 4096 bytes on i386).
122 Since Linux 2.6.11, the pipe capacity is 16 pages
123 (i.e., 65,536 bytes in a system with a page size of 4096 bytes).
124 Since Linux 2.6.35, the default pipe capacity is 16 pages,
125 but the capacity can be queried and set using the
126 .BR fcntl (2)
127 .B F_GETPIPE_SZ
129 .B F_SETPIPE_SZ
130 operations.
132 .BR fcntl (2)
133 for more information.
135 The following
136 .BR ioctl (2)
137 operation, which can be applied to a file descriptor
138 that refers to either end of a pipe,
139 places a count of the number of unread bytes in the pipe in the
140 .I int
141 buffer pointed to by the final argument of the call:
143 .in +4n
145 ioctl(fd, FIONREAD, &nbytes);
150 .B FIONREAD
151 operation is not specified in any standard,
152 but is provided on many implementations.
154 .SS /proc files
155 On Linux, the following files control how much memory can be used for pipes:
157 .IR /proc/sys/fs/pipe\-max\-pages " (only in Linux 2.6.34)"
158 .\" commit b492e95be0ae672922f4734acf3f5d35c30be948
159 An upper limit, in pages, on the capacity that an unprivileged user
160 (one without the
161 .B CAP_SYS_RESOURCE
162 capability)
163 can set for a pipe.
165 The default value for this limit is 16 times the default pipe capacity
166 (see above); the lower limit is two pages.
168 This interface was removed in Linux 2.6.35, in favor of
169 .IR /proc/sys/fs/pipe\-max\-size .
171 .IR /proc/sys/fs/pipe\-max\-size " (since Linux 2.6.35)"
172 .\" commit ff9da691c0498ff81fdd014e7a0731dab2337dac
173 The maximum size (in bytes) of individual pipes that can be set
174 .\" This limit is not checked on pipe creation, where the capacity is
175 .\" always PIPE_DEF_BUFS, regardless of pipe-max-size
176 by users without the
177 .B CAP_SYS_RESOURCE
178 capability.
179 The value assigned to this file may be rounded upward,
180 to reflect the value actually employed for a convenient implementation.
181 To determine the rounded-up value,
182 display the contents of this file after assigning a value to it.
184 The default value for this file is 1048576 (1\ MiB).
185 The minimum value that can be assigned to this file is the system page size.
186 Attempts to set a limit less than the page size cause
187 .BR write (2)
188 to fail with the error
189 .BR EINVAL .
191 Since Linux 4.9,
192 .\" commit 086e774a57fba4695f14383c0818994c0b31da7c
193 the value on this file also acts as a ceiling on the default capacity
194 of a new pipe or newly opened FIFO.
196 .IR /proc/sys/fs/pipe\-user\-pages\-hard " (since Linux 4.5)"
197 .\" commit 759c01142a5d0f364a462346168a56de28a80f52
198 The hard limit on the total size (in pages) of all pipes created or set by
199 a single unprivileged user (i.e., one with neither the
200 .B CAP_SYS_RESOURCE
201 nor the
202 .B CAP_SYS_ADMIN
203 capability).
204 So long as the total number of pages allocated to pipe buffers
205 for this user is at this limit,
206 attempts to create new pipes will be denied,
207 and attempts to increase a pipe's capacity will be denied.
209 When the value of this limit is zero (which is the default),
210 no hard limit is applied.
211 .\" The default was chosen to avoid breaking existing applications that
212 .\" make intensive use of pipes (e.g., for splicing).
214 .IR /proc/sys/fs/pipe\-user\-pages\-soft " (since Linux 4.5)"
215 .\" commit 759c01142a5d0f364a462346168a56de28a80f52
216 The soft limit on the total size (in pages) of all pipes created or set by
217 a single unprivileged user (i.e., one with neither the
218 .B CAP_SYS_RESOURCE
219 nor the
220 .B CAP_SYS_ADMIN
221 capability).
222 So long as the total number of pages allocated to pipe buffers
223 for this user is at this limit,
224 individual pipes created by a user will be limited to one page,
225 and attempts to increase a pipe's capacity will be denied.
227 When the value of this limit is zero, no soft limit is applied.
228 The default value for this file is 16384,
229 which permits creating up to 1024 pipes with the default capacity.
231 Before Linux 4.9, some bugs affected the handling of the
232 .I pipe\-user\-pages\-soft
234 .I pipe\-user\-pages\-hard
235 limits; see BUGS.
237 .SS PIPE_BUF
238 POSIX.1 says that writes of less than
239 .B PIPE_BUF
240 bytes must be atomic: the output data is written to the pipe as a
241 contiguous sequence.
242 Writes of more than
243 .B PIPE_BUF
244 bytes may be nonatomic: the kernel may interleave the data
245 with data written by other processes.
246 POSIX.1 requires
247 .B PIPE_BUF
248 to be at least 512 bytes.
249 (On Linux,
250 .B PIPE_BUF
251 is 4096 bytes.)
252 The precise semantics depend on whether the file descriptor is nonblocking
253 .RB ( O_NONBLOCK ),
254 whether there are multiple writers to the pipe, and on
255 .IR n ,
256 the number of bytes to be written:
258 \fBO_NONBLOCK\fP disabled, \fIn\fP <= \fBPIPE_BUF\fP
260 .I n
261 bytes are written atomically;
262 .BR write (2)
263 may block if there is not room for
264 .I n
265 bytes to be written immediately
267 \fBO_NONBLOCK\fP enabled, \fIn\fP <= \fBPIPE_BUF\fP
268 If there is room to write
269 .I n
270 bytes to the pipe, then
271 .BR write (2)
272 succeeds immediately, writing all
273 .I n
274 bytes; otherwise
275 .BR write (2)
276 fails, with
277 .I errno
278 set to
279 .BR EAGAIN .
281 \fBO_NONBLOCK\fP disabled, \fIn\fP > \fBPIPE_BUF\fP
282 The write is nonatomic: the data given to
283 .BR write (2)
284 may be interleaved with
285 .BR write (2)s
286 by other process;
288 .BR write (2)
289 blocks until
290 .I n
291 bytes have been written.
293 \fBO_NONBLOCK\fP enabled, \fIn\fP > \fBPIPE_BUF\fP
294 If the pipe is full, then
295 .BR write (2)
296 fails, with
297 .I errno
298 set to
299 .BR EAGAIN .
300 Otherwise, from 1 to
301 .I n
302 bytes may be written (i.e., a "partial write" may occur;
303 the caller should check the return value from
304 .BR write (2)
305 to see how many bytes were actually written),
306 and these bytes may be interleaved with writes by other processes.
307 .SS Open file status flags
308 The only open file status flags that can be meaningfully applied to
309 a pipe or FIFO are
310 .B O_NONBLOCK
312 .BR O_ASYNC .
314 Setting the
315 .B O_ASYNC
316 flag for the read end of a pipe causes a signal
317 .RB ( SIGIO
318 by default) to be generated when new input becomes available on the pipe.
319 The target for delivery of signals must be set using the
320 .BR fcntl (2)
321 .B F_SETOWN
322 command.
323 On Linux,
324 .B O_ASYNC
325 is supported for pipes and FIFOs only since Linux 2.6.
326 .SS Portability notes
327 On some systems (but not Linux), pipes are bidirectional:
328 data can be transmitted in both directions between the pipe ends.
329 POSIX.1 requires only unidirectional pipes.
330 Portable applications should avoid reliance on
331 bidirectional pipe semantics.
332 .SS BUGS
333 Before Linux 4.9, some bugs affected the handling of the
334 .I pipe\-user\-pages\-soft
336 .I pipe\-user\-pages\-hard
337 limits when using the
338 .BR fcntl (2)
339 .B F_SETPIPE_SZ
340 operation to change a pipe's capacity:
341 .\" These bugs where remedied by a series of patches, in particular,
342 .\" commit b0b91d18e2e97b741b294af9333824ecc3fadfd8 and
343 .\" commit a005ca0e6813e1d796a7422a7e31d8b8d6555df1
344 .IP (a) 5
345 When increasing the pipe capacity, the checks against the soft and
346 hard limits were made against existing consumption,
347 and excluded the memory required for the increased pipe capacity.
348 The new increase in pipe capacity could then push the total
349 memory used by the user for pipes (possibly far) over a limit.
350 (This could also trigger the problem described next.)
352 Starting with Linux 4.9,
353 the limit checking includes the memory required for the new pipe capacity.
354 .IP (b)
355 The limit checks were performed even when the new pipe capacity was
356 less than the existing pipe capacity.
357 This could lead to problems if a user set a large pipe capacity,
358 and then the limits were lowered, with the result that the user could
359 no longer decrease the pipe capacity.
361 Starting with Linux 4.9, checks against the limits
362 are performed only when increasing a pipe's capacity;
363 an unprivileged user can always decrease a pipe's capacity.
364 .IP (c)
365 The accounting and checking against the limits were done as follows:
367 .IP (1) 5
368 .PD 0
369 Test whether the user has exceeded the limit.
370 .IP (2)
371 Make the new pipe buffer allocation.
372 .IP (3)
373 Account new allocation against the limits.
377 This was racey.
378 Multiple processes could pass point (1) simultaneously,
379 and then allocate pipe buffers that were accounted for only in step (3),
380 with the result that the user's pipe buffer
381 allocation could be pushed over the limit.
383 Starting with Linux 4.9,
384 the accounting step is performed before doing the allocation,
385 and the operation fails if the limit would be exceeded.
387 Before Linux 4.9, bugs similar to points (a) and (c) could also occur
388 when the kernel allocated memory for a new pipe buffer;
389 that is, when calling
390 .BR pipe (2)
391 and when opening a previously unopened FIFO.
392 .SH SEE ALSO
393 .BR mkfifo (1),
394 .BR dup (2),
395 .BR fcntl (2),
396 .BR open (2),
397 .BR pipe (2),
398 .BR poll (2),
399 .BR select (2),
400 .BR socketpair (2),
401 .BR splice (2),
402 .BR stat (2),
403 .BR tee (2),
404 .BR vmsplice (2),
405 .BR mkfifo (3),
406 .BR epoll (7),
407 .BR fifo (7)