3 pipe \- create an interprocess channel
13 creates a buffered channel for interprocess I/O communication.
14 Two file descriptors are returned in
18 is available for reading from
22 is available for reading from
25 After the pipe has been established,
29 calls may pass data through the
35 .\" The bytes placed on a pipe
38 .\" are contiguous even if many processes are writing.
39 .\" Write boundaries are preserved: each read terminates
40 .\" when the read buffer is full or after reading the last byte
41 .\" of a write, whichever comes first.
43 .\" The number of bytes available to a
55 When all the data has been read from a pipe and the writer has closed the pipe or exited,
57 will return 0 bytes. Writes to a pipe with no reader will generate a note
58 .BR "sys: write on closed pipe" .
60 .B \*9/src/lib9/pipe.c
68 If a read or a write of a pipe is interrupted, some unknown
69 number of bytes may have been transferred.
74 to avoid name conflicts with Unix's
78 Unix pipes are not guaranteed to be bidirectional.
79 In order to ensure a bidirectional channel,
81 creates Unix domain sockets via the
83 instead of Unix pipes.
85 The implementation of pipes as Unix domain sockets
86 causes problems with some Unix implementations of
88 Unix's dup device. If a Unix domain socket is open as file
89 descriptor 0, some implementations disallow the opening of
94 If this functionality is important
100 and fall back on the (possibly unidirectional) Unix pipes.