Manual Page Result
0
Command: pipe | Section: 2 | Source: Digital UNIX | File: pipe.2.gz
pipe(2) System Calls Manual pipe(2)
NAME
pipe - Creates an interprocess channel
SYNOPSIS
#include <unistd.h>
int pipe ( int filedes[2] );
STANDARDS
Interfaces documented on this reference page conform to industry stan-
dards as follows:
pipe(): XPG4, XPG4-UNIX
Refer to the standards(5) reference page for more information about in-
dustry standards and associated tags.
PARAMETERS
Specifies the address of an array of two integers into which the new
file descriptors are placed.
DESCRIPTION
The pipe() function creates a unidirectional interprocess channel
called a pipe, and returns two file descriptors, filedes[0] and
filedes[1]. The file descriptor specified by the filedes[0] parameter
is opened for reading and the file descriptor specified by the
filedes[1] parameter is opened for writing. Their integer values will
be the two lowest available at the time of the call to the pipe() func-
tion.
A process has the pipe open for reading if it has a file descriptor
open that refers to the read end, filedes[0]. A process has the pipe
open for writing if it has a file descriptor open that refers to the
write end, filedes[1]. A read on file descriptor filedes[0] accesses
the data written to filedes[1] on a first-in, first-out (FIFO) basis.
System V Compatibility
The pipe() function creates an interprocess channel called a pipe and
returns two file descriptors, filedes[0] and filedes[1]. Both file de-
scriptors 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.
Under both behaviors, 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.
[Digital] 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. See standards(5) for further information.
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.
[Digital] More than getdtablesize(2) file descriptors are al-
ready opened by this process. The system file table is full, or
the device containing pipes has no free i-nodes. [Digital] The
system was unable to allocate kernel memory for more file de-
scriptors.
RELATED INFORMATION
Commands: sh(1)
Functions: fcntl(2), getmsg(2), poll(2), putmsg(2), read(2), select(2),
write(2), getdtablesize(2)
Standards: standards(5) delim off
pipe(2)