plan9port/man/man3/pipe.3

75 lines
1.6 KiB
Groff
Raw Normal View History

2004-04-10 18:53:55 +00:00
.TH PIPE 3
.SH NAME
pipe \- create an interprocess channel
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.B
int pipe(int fd[2])
.SH DESCRIPTION
.I Pipe
creates a buffered channel for interprocess I/O communication.
Two file descriptors are returned in
.IR fd .
Data written to
.B fd[1]
is available for reading from
.B fd[0]
and data written to
.B fd[0]
is available for reading from
.BR fd[1] .
.PP
After the pipe has been established,
cooperating processes
created by subsequent
.IR fork (3)
2004-04-10 18:53:55 +00:00
calls may pass data through the
pipe with
.I read
and
.I write
calls.
The bytes placed on a pipe
by one
.I write
are contiguous even if many processes are writing.
Write boundaries are preserved: each read terminates
when the read buffer is full or after reading the last byte
of a write, whichever comes first.
.PP
The number of bytes available to a
.IR read (3)
2004-04-10 18:53:55 +00:00
is reported
in the
.B Length
field returned by
.I fstat
or
.I dirfstat
on a pipe (see
.IR stat (3)).
2004-04-10 18:53:55 +00:00
.PP
When all the data has been read from a pipe and the writer has closed the pipe or exited,
.IR read (3)
2004-04-10 18:53:55 +00:00
will return 0 bytes. Writes to a pipe with no reader will generate a note
.BR "sys: write on closed pipe" .
.SH SOURCE
2004-04-19 19:22:56 +00:00
.B /usr/local/plan9/src/libc/9syscall
2004-04-10 18:53:55 +00:00
.SH SEE ALSO
.IR intro (3),
.IR read (3),
2004-04-10 18:53:55 +00:00
.IR pipe (3)
.SH DIAGNOSTICS
Sets
.IR errstr .
.SH BUGS
If a read or a write of a pipe is interrupted, some unknown
number of bytes may have been transferred.
.br
When a read from a pipe returns 0 bytes, it usually means end of file
but is indistinguishable from reading the result of an explicit
write of zero bytes.