pipe(3)pipe(3)NAMEpipe - Creates an interprocess channel
SYNOPSIS
#include <unistd.h>
int pipe ( int filedes[2] );
LIBRARY
SVR4 Library (libsvr4)
PARAMETERS
Specifies the address of an array of two integers into which the new
file descriptors are placed.
DESCRIPTION
The pipe() function creates an interprocess channel called a pipe and
returns two file descriptors, filedes[0] and filedes[1]. Both file
descriptors are STREAMS based and are bidirectional. Data written on
filedes[0] appears on filedes[1] and vice versa. Data is read in a
first-in, first-out (FIFO) basis.
The O_NONBLOCK and the FD_CLOEXC flags are set clear on both file
descriptors.(The fcntl() function can be used to set the O_NONBLOCK
flag.)
Upon successful completion, the pipe() function marks the st_atime,
st_ctime and st_mtime fields of the pipe for update.
NOTES
When a read or write system call on a pipe is interrupted by a signal
and no bytes have been transferred through the pipe, the read or write
system call returns a -1 and errno is set to [EINTR]. This behavior is
different from previous releases, when both system calls either
restarted the transfer or caused errno to be set to [EINTR], depending
on the setting of the SA_RESTART flag for the interrupting signal.
As a result of this change, applications must now either handle the
[EINTR] return or block any expected signals for the duration of the
read or write operation.
[Tru64 UNIX] When compiled in the X/Open UNIX environment, calls to
the pipe() function are internally renamed by prepending _E to the
function name. When you are debugging a module that includes the pipe()
function and for which _XOPEN_SOURCE_EXTENDED has been defined, use
_Epipe to refer to the pipe() call.
RETURN VALUES
Upon successful completion, a value of 0 (zero) is returned. If the
pipe() function fails, a value of -1 is returned and errno is set to
indicate the error.
ERRORS
If the pipe() function fails, errno may be set to one of the following
values: The filedes parameter is an invalid address. A read() or a
write() on a pipe is interrupted by a signal and no bytes have been
transferred through the pipe. More than OPEN_MAX-2 file descriptors
are already opened by this process.
[Tru64 UNIX] More than getdtablesize(2) file descriptors are
already opened by this process. The system file table is full,
or the device containing pipes has no free i-nodes. [Tru64
UNIX] The system was unable to allocate kernel memory for more
file descriptors.
RELATED INFORMATION
Commands: sh(1)
Functions: fcntl(2), getmsg(2), poll(2), putmsg(2), read(2), select(2),
write(2), getdtablesize(2)
delim off
pipe(3)