Blame


1 cfa37a7b 2004-04-10 devnull .TH PIPE 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull pipe \- create an interprocess channel
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
6 cfa37a7b 2004-04-10 devnull .br
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
8 cfa37a7b 2004-04-10 devnull .PP
9 cfa37a7b 2004-04-10 devnull .B
10 cfa37a7b 2004-04-10 devnull int pipe(int fd[2])
11 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
12 cfa37a7b 2004-04-10 devnull .I Pipe
13 cfa37a7b 2004-04-10 devnull creates a buffered channel for interprocess I/O communication.
14 cfa37a7b 2004-04-10 devnull Two file descriptors are returned in
15 cfa37a7b 2004-04-10 devnull .IR fd .
16 cfa37a7b 2004-04-10 devnull Data written to
17 cfa37a7b 2004-04-10 devnull .B fd[1]
18 cfa37a7b 2004-04-10 devnull is available for reading from
19 cfa37a7b 2004-04-10 devnull .B fd[0]
20 cfa37a7b 2004-04-10 devnull and data written to
21 cfa37a7b 2004-04-10 devnull .B fd[0]
22 cfa37a7b 2004-04-10 devnull is available for reading from
23 cfa37a7b 2004-04-10 devnull .BR fd[1] .
24 cfa37a7b 2004-04-10 devnull .PP
25 cfa37a7b 2004-04-10 devnull After the pipe has been established,
26 cfa37a7b 2004-04-10 devnull cooperating processes
27 cfa37a7b 2004-04-10 devnull created by subsequent
28 bf8a59fa 2004-04-11 devnull .IR fork (3)
29 cfa37a7b 2004-04-10 devnull calls may pass data through the
30 cfa37a7b 2004-04-10 devnull pipe with
31 cfa37a7b 2004-04-10 devnull .I read
32 cfa37a7b 2004-04-10 devnull and
33 cfa37a7b 2004-04-10 devnull .I write
34 cfa37a7b 2004-04-10 devnull calls.
35 cfa37a7b 2004-04-10 devnull The bytes placed on a pipe
36 cfa37a7b 2004-04-10 devnull by one
37 cfa37a7b 2004-04-10 devnull .I write
38 cfa37a7b 2004-04-10 devnull are contiguous even if many processes are writing.
39 cfa37a7b 2004-04-10 devnull Write boundaries are preserved: each read terminates
40 cfa37a7b 2004-04-10 devnull when the read buffer is full or after reading the last byte
41 cfa37a7b 2004-04-10 devnull of a write, whichever comes first.
42 cfa37a7b 2004-04-10 devnull .PP
43 cfa37a7b 2004-04-10 devnull The number of bytes available to a
44 bf8a59fa 2004-04-11 devnull .IR read (3)
45 cfa37a7b 2004-04-10 devnull is reported
46 cfa37a7b 2004-04-10 devnull in the
47 cfa37a7b 2004-04-10 devnull .B Length
48 cfa37a7b 2004-04-10 devnull field returned by
49 cfa37a7b 2004-04-10 devnull .I fstat
50 cfa37a7b 2004-04-10 devnull or
51 cfa37a7b 2004-04-10 devnull .I dirfstat
52 cfa37a7b 2004-04-10 devnull on a pipe (see
53 bf8a59fa 2004-04-11 devnull .IR stat (3)).
54 cfa37a7b 2004-04-10 devnull .PP
55 cfa37a7b 2004-04-10 devnull When all the data has been read from a pipe and the writer has closed the pipe or exited,
56 bf8a59fa 2004-04-11 devnull .IR read (3)
57 cfa37a7b 2004-04-10 devnull will return 0 bytes. Writes to a pipe with no reader will generate a note
58 cfa37a7b 2004-04-10 devnull .BR "sys: write on closed pipe" .
59 cfa37a7b 2004-04-10 devnull .SH SOURCE
60 cfa37a7b 2004-04-10 devnull .B /sys/src/libc/9syscall
61 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
62 bf8a59fa 2004-04-11 devnull .IR intro (3),
63 bf8a59fa 2004-04-11 devnull .IR read (3),
64 cfa37a7b 2004-04-10 devnull .IR pipe (3)
65 cfa37a7b 2004-04-10 devnull .SH DIAGNOSTICS
66 cfa37a7b 2004-04-10 devnull Sets
67 cfa37a7b 2004-04-10 devnull .IR errstr .
68 cfa37a7b 2004-04-10 devnull .SH BUGS
69 cfa37a7b 2004-04-10 devnull If a read or a write of a pipe is interrupted, some unknown
70 cfa37a7b 2004-04-10 devnull number of bytes may have been transferred.
71 cfa37a7b 2004-04-10 devnull .br
72 cfa37a7b 2004-04-10 devnull When a read from a pipe returns 0 bytes, it usually means end of file
73 cfa37a7b 2004-04-10 devnull but is indistinguishable from reading the result of an explicit
74 cfa37a7b 2004-04-10 devnull write of zero bytes.