The Single UNIX ® Specification, Version 2
Copyright © 1997 The Open Group

 NAME

pipe - create an interprocess channel

 SYNOPSIS



#include <unistd.h>

int pipe(int fildes[2]);

 DESCRIPTION

The pipe() function will create a pipe and place two file descriptors, one each into the arguments fildes[0] and fildes[1], that refer to the open file descriptions for the read and write ends of the pipe. Their integer values will be the two lowest available at the time of the pipe() call. The O_NONBLOCK and FD_CLOEXEC flags shall be clear on both file descriptors. (The fcntl() function can be used to set both these flags.)

Data can be written to the file descriptor fildes[1] and read from file descriptor fildes[0]. A read on the file descriptor fildes[0] will access data written to file descriptor fildes[1] on a first-in-first-out basis. It is unspecified whether fildes[0] is also open for writing and whether fildes[1] is also open for reading.

A process has the pipe open for reading (correspondingly writing) if it has a file descriptor open that refers to the read end, fildes[0] (write end, fildes[1]).

Upon successful completion, pipe() will mark for update the st_atime, st_ctime and st_mtime fields of the pipe.

 RETURN VALUE

Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error.

 ERRORS

The pipe() function will fail if:
[EMFILE]
More than {OPEN_MAX} minus two file descriptors are already in use by this process.
[ENFILE]
The number of simultaneously open files in the system would exceed a system-imposed limit.

 EXAMPLES

None.

 APPLICATION USAGE

None.

 FUTURE DIRECTIONS

None.

 SEE ALSO

fcntl(), read(), write(), <fcntl.h>, <unistd.h>.

DERIVATION

Derived from Issue 1 of the SVID.

UNIX ® is a registered Trademark of The Open Group.
Copyright © 1997 The Open Group
[ Main Index | XSH | XCU | XBD | XCURSES | XNS ]