Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sh(1)

fcntl(2)

getmsg(2)

poll(2)

putmsg(2)

read(2)

select(2)

write(2)

getdtablesize(2)

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)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026