unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Page:
Section:
Apropos / Subsearch:
optional field

pipe(2)                          System Calls                          pipe(2)



NAME
       pipe - create an interprocess channel

SYNOPSIS
       #include <unistd.h>

       int pipe(int fildes[2]);

DESCRIPTION
       The  pipe() function creates an I/O mechanism called a pipe and returns
       two file descriptors, fildes[0] and  fildes[1].  The  files  associated
       with  fildes[0] and fildes[1] are streams and are both opened for read-
       ing and writing.  The O_NDELAY, O_NONBLOCK, and  FD_CLOEXEC  flags  are
       cleared  on both file descriptors. The fcntl(2) function can be used to
       set these flags.

       A read from fildes[0] accesses the  data  written  to  fildes[1]  on  a
       first-in-first-out  (FIFO) basis and a read from fildes[1] accesses the
       data written to fildes[0] also on a FIFO basis.

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

RETURN VALUES
       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} 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.



ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:


       tab()    allbox;    cw(2.750000i)|     cw(2.750000i)     lw(2.750000i)|
       lw(2.750000i).   ATTRIBUTE TYPEATTRIBUTE VALUE Interface StabilityStan-
       dard MT-LevelAsync-Signal-Safe


SEE ALSO
       sh(1), fcntl(2),  fstat(2),  getmsg(2),  poll(2),  putmsg(2),  read(2),
       write(2), attributes(5), standards(5), streamio(7I)

NOTES
       Since  a  pipe is bi-directional, there are two separate flows of data.
       Therefore, the size (st_size) returned by a call to fstat(2) with argu-
       ment  fildes[0] or fildes[1] is the number of bytes available for read-
       ing from fildes[0] or  fildes[1]  respectively.  Previously,  the  size
       (st_size)  returned  by  a call to fstat() with argument fildes[1] (the
       write-end) was the number of bytes available for reading from fildes[0]
       (the read-end).



SunOS 5.10                        23 Apr 2002                          pipe(2)