*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> pipe (2)              
Title
Content
Arch
Section
 

pipe(2)

Contents


NAME    [Toc]    [Back]

       pipe - Create an interprocess channel

SYNOPSIS    [Toc]    [Back]

       #include <unistd.h>

       int pipe(
               int filedes[2] );

STANDARDS    [Toc]    [Back]

       Interfaces  documented  on  this reference page conform to
       industry standards as follows:

       pipe(): XSH4.0, XSH4.2, XSH5.0

       Refer to the standards(5) reference page for more information
 about industry standards and associated tags.

PARAMETERS    [Toc]    [Back]

       Specifies  the  address  of  an array of two integers into
       which the new file descriptors are placed.

DESCRIPTION    [Toc]    [Back]

       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  operation  on file descriptor filedes[0] accesses
       the data written to filedes[1] on  a  first-in,  first-out
       (FIFO) basis.

                                  Note

       In  the  System V compatiblity environment, filedes[0] and
       filedes[1] are STREAMS based and are bidirectional.   Data
       written  on  filedes[0]  appears  on  filedes[1]  and vice
       versa. Data is read in a first-in, first-out (FIFO) basis.

       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    [Toc]    [Back]

       [Tru64  UNIX]  When  a  read() or write() system call on a
       pipe is interrupted by a signal and  no  bytes  have  been
       transferred through the pipe, the read() or write() system
       call returns a -1 and errno is set to [EINTR]. This behavior
 differs from behavior in early releases of the operating
 system, when both system calls  either  restarted  the
       transfer  or  caused errno to be set to [EINTR], depending
       on the setting of the SA_RESTART flag for the interrupting
       signal.

       [Tru64  UNIX]  As  a  result  of this change, applications
       must now either handle the [EINTR]  return  or  block  any
       expected  signals  for  the  duration of the read or write
       operation.

       [Tru64 UNIX]  When compiled in the  X/Open  UNIX  environment,
  calls to the pipe() function are internally renamed
       by prepending _E to the function name. When you are debugging
  a  module  that includes the pipe() function and for
       which _XOPEN_SOURCE_EXTENDED has been defined, use  _Epipe
       to refer to the pipe() call.  See standards(5) for further
       information.

RETURN VALUES    [Toc]    [Back]

       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    [Toc]    [Back]

       If the pipe() function fails, errno may be set to  one  of
       the  following values: [Tru64 UNIX]  The filedes parameter
       is an  invalid  address.   [Tru64  UNIX]  A  read()  or  a
       write()  call  on a pipe is interrupted by a signal and no
       bytes have been transferred through the pipe.   More  than
       OPEN_MAX-2  file  descriptors  are  already opened by this
       process.

              [Tru64  UNIX]  More  than   getdtablesize(2)   file
              descriptors  are  already  opened  by this process.
              The system file table is full, or the  device  containing
   pipes   has   no  free  i-nodes.   [Tru64
              UNIX]  The system was  unable  to  allocate  kernel
              memory for more file descriptors.

SEE ALSO    [Toc]    [Back]

      
      
       Commands: sh(1)

       Functions: fcntl(2), getmsg(2), getdtablesize(2), poll(2),
       putmsg(2), read(2), select(2), write(2)

       Standards: standards(5)



                                                          pipe(2)
[ Back ]
 Similar pages
Name OS Title
pipe OpenBSD create descriptor pair for interprocess communication
pipe NetBSD create descriptor pair for interprocess communication
pipe FreeBSD create descriptor pair for interprocess communication
socket HP-UX interprocess communications
stdipc IRIX standard interprocess communication package
datapool IRIX Fortran Interprocess Data Sharing
ftok Tru64 Generate a standard interprocess communication key
ipc Linux System V interprocess communication mechanisms
unix Linux Sockets for local interprocess communication.
ipcs Tru64 Reports Interprocess Communication (IPC) facility status
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service