pipe(2) — System Calls
NAME
pipe − Creates an interprocess channel
SYNOPSIS
int pipe (
int filedes[2] );
PARAMETERS
filedesSpecifies 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() function.
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 descriptors are STREAMS based and are bidirectional. Data written on filedes[0] appears on filedes[2] 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
AES Support Level:
Full use
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:
[EFAULT]The filedes parameter is an invalid address.
[EINTR]A read() was interrupted by a signal before any data arrived, and the signal handler was installed with an indication that functions are not to be restarted.
[EMFILE]More than OPEN_MAX-2 file descriptors are already opened by this process. More than getdtablesize(2) file descriptors are already opened by this process.
[ENFILE]The system file table is full, or the device containing pipes has no free i-nodes.
[ENOMEM]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)