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

  man pages->HP-UX 11i man pages -> pipe (2)              
Title
Content
Arch
Section
 

Contents


 pipe(2)                                                             pipe(2)




 NAME    [Toc]    [Back]
      pipe - create an interprocess channel

 SYNOPSIS    [Toc]    [Back]
      int pipe(int fildes[2]);

 DESCRIPTION    [Toc]    [Back]
      pipe() creates an I/O mechanism called a pipe and returns two file
      descriptors, fildes[0] and fildes[1].  fildes[0] is opened for reading
      and fildes[1] is opened for writing.

      A read-only file descriptor fildes[0] accesses the data written to
      fildes[1] on a first-in-first-out (FIFO) basis.  For details of the
      I/O behavior of pipes see read(2) and write(2).

      By default, HP-UX pipes are not STREAMS-based.  It is possible to
      generate the kernel so that all pipes created on a system are
      STREAMS-based.  This can only be done for HP-UX releases 10.0 and
      later.  STREAMS-based FIFOs (created by mknod or mkfifo) are not
      supported on HP-UX.

      To generate a kernel that supports STREAMS-based pipes:

      +  STREAMS/UX must be installed.

      +  The module pipemod and the driver pipedev must be included in the
         /stand/system file.  (When STREAMS/UX is installed, pipemod and
         pipedev are automatically added to the system file.)

      +  The tunable parameter "streampipes" must be set to 1 in the
         /stand/system file.  (This is not automatically done when
         STREAMS/UX is installed.)

      +  The kernel must be generated and the system rebooted.  Once this is
         done, all pipes created by pipe() will be STREAMS-based.

      For more information, see STREAMS/UX for the HP 9000 Reference Manual.

 EXAMPLES    [Toc]    [Back]
      The following example uses pipe() to implement the command string ls |
      sort:

      #include <sys/types.h>
      pid_t pid;
      int pipefd[2];

      /*  Assumes file descriptor 0 and 1 are open  */
      pipe (pipefd);

      if ((pid = fork()) == (pid_t)0) /* check process id of child process */ {
           close(1);      /* close stdout */



 Hewlett-Packard Company            - 1 -   HP-UX 11i Version 2: August 2003






 pipe(2)                                                             pipe(2)




           dup (pipefd[1]); /* points pipefd at file descriptor */
           close (pipefd[0]);
           execlp ( ls", ls , (char *)0);
      }
      else if (pid > (pid_t)0) {
           close(0); /* close stdin  */
           dup (pipefd[0]);
           /* point the child's standard output to parent's standard input */
           close (pipefd[1]);
           execlp ("sort", "sort", (char *)0); /* parent process does sort */
      }

 RETURN VALUE    [Toc]    [Back]
      Upon successful completion, a value of 0 is returned.  Otherwise, a
      value of -1 is returned and errno is set to indicate the error.

 ERRORS    [Toc]    [Back]
      pipe() fails if one or more of the following is true:

      [EMFILE]       NFILE-1 or more file descriptors are currently open.

      [ENFILE]       The system file table is full.

      [ENOSPC]       The file system lacks sufficient space to create the
                     pipe.

      [ENOSR]        Could not allocate resources for both Stream heads
                     (STREAMS-based pipes only).

 SEE ALSO    [Toc]    [Back]
      sh(1), read(2), write(2), popen(3S), streamio(7).

 STANDARDS CONFORMANCE    [Toc]    [Back]
      pipe(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1


 Hewlett-Packard Company            - 2 -   HP-UX 11i Version 2: August 2003
[ 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