Creates an interprocess channel.
#include <unistd.h>
int pipe (FileDescriptor) int FileDescriptor[2];
The pipe subroutine creates an interprocess channel called a pipe and returns two file descriptors, FileDescriptor[0] and FileDescriptor[1]. FileDescriptor[0] is opened for reading and FileDescriptor[1] is opened for writing.
A read operation on the FileDescriptor[0] parameter accesses the data written to the FileDescriptor[1] parameter on a first-in, first-out (FIFO) basis.
Write requests of PIPE_BUF bytes or fewer will not be interleaved (mixed) with data from other processes doing writes on the same pipe. PIPE_BUF is a system variable described in the pathconf subroutine. Writes of greater than PIPE_BUF bytes may have data interleaved, on arbitrary boundaries, with other writes.
If O_NONBLOCK or O_NDELAY are set, writes requests of PIPE_BUF bytes or fewer will either succeed completely or fail and return -1 with the errno global variable set to EAGAIN. A write request for more than PIPE_BUF bytes will either transfer what it can and return the number of bytes actually written, or transfer no data and return -1 with the errno global variable set to EAGAIN.
FileDescriptor | Specifies the address of an array of two integers into which the new file descriptors are placed. |
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned, and the errno global variable is set to identify the error.
The pipe subroutine is unsuccessful if one or more the following are true:
This subroutine is part of Base Operating System (BOS) Runtime.
The read subroutine, select subroutine, write subroutine.
Files, Directories, and File Systems for Programmers in AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs.