1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <html>
- <head>
- <title>pipe</title>
- <body bgcolor=#ffffff>
- <h2 align=center>pipe</h2>
- <h4 align=center>OS/161 Reference Manual</h4>
- <h3>Name</h3>
- pipe - create pipe object
- <h3>Library</h3>
- Standard C Library (libc, -lc)
- <h3>Synopsis</h3>
- #include <unistd.h><br>
- <br>
- int<br>
- pipe(int *<em>fds</em>);
- <h3>Description</h3>
- The pipe call creates an anonymous pipe object in the system, and
- binds it to two file handles in the current process, one for the read
- end and one for the write end. (Pipes are unidirectional.)
- <p>
- Data written on the write end may be read from the read end. Once all
- references to the write end are closed, and all remaining data is
- read, further reads return EOF. If all references to the read end are
- closed before the write end is closed, further writes generate
- errors. The pipe object itself is destroyed when all references to
- both ends are closed.
- <p>
- <em>fds</em> is a pointer to two integers. A file handle for the read
- end of the pipe is stored in <em>fds</em>[0], and a file handle for
- the write end is stored in <em>fds</em>[1].
- <p>
- pipe is most often used in conjunction with <A HREF=dup2.html>dup2</A>
- and <A HREF=fork.html>fork</A> to send the standard output of one
- process to the standard input of another.
- <p>
- In POSIX, pipe I/O of data blocks smaller than a standard constant
- PIPE_BUF is guaranteed to be atomic. If you implement pipes, you need
- not necessarily implement POSIX semantics, but you should decide what
- sort of atomicity guarantees you wish to make and specify them
- carefully.
- <h3>Return Values</h3>
- On success, pipe returns 0. On error, -1 is returned, and
- <A HREF=errno.html>errno</A> is set according to the error
- encountered.
- <h3>Errors</h3>
- The following error codes should be returned under the conditions
- given. Other error codes may be returned for other errors not
- mentioned here.
- <blockquote><table width=90%>
- <td width=10%> </td><td> </td></tr>
- <tr><td>EMFILE</td> <td>The process's file table was full, or a
- process-specific limit on open files
- was reached.</td></tr>
- <tr><td>ENFILE</td> <td>The system file table is full, if such a
- thing exists, or a system-wide limit
- on open files was reached.</td></tr>
- <tr><td>EFAULT</td> <td><em>fds</em> was an invalid pointer.</td></tr>
- </table></blockquote>
- </body>
- </html>
|