IPB
>  Man Pages > Linux > Suse Linux 10.1 > Section 2 > pipe man page

pipe man page

Section 2 - Suse Linux 10.1 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!


PIPE(2)                    Linux Programmer's Manual                   PIPE(2)




NAME

       pipe - create pipe


SYNOPSIS

       #include <unistd.h>

       int pipe(int filedes[2]);


DESCRIPTION

       pipe()  creates  a  pair of file descriptors, pointing to a pipe inode,
       and places them in the array pointed to by filedes.  filedes[0] is  for
       reading, filedes[1] is for writing.


RETURN VALUE

       On  success,  zero is returned.  On error, -1 is returned, and errno is
       set appropriately.


ERRORS

       EFAULT filedes is not valid.

       EMFILE Too many file descriptors are in use by the process.

       ENFILE The system limit on the total number  of  open  files  has  been
              reached.


CONFORMING TO

       POSIX.1


EXAMPLE

       The  following  program  creates  a pipe, and then fork(2)s to create a
       child process.  After the fork(2), each process closes the  descriptors
       that  it  doesn't  need  for  the  pipe (see pipe(7)).  The parent then
       writes the string contained in the program's command-line  argument  to
       the  pipe,  and  the  child reads this string a byte at a time from the
       pipe and echoes it on standard output.

       #include <sys/wait.h>
       #include <assert.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           int pfd[2];
           pid_t cpid;
           char buf;

           assert(argc == 2);

           if (pipe(pfd) == -1) { perror("pipe"); exit(EXIT_FAILURE); }

           cpid = fork();
           if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); }

           if (cpid == 0) {    /* Child reads from pipe */
               close(pfd[1]);          /* Close unused write end */

               while (read(pfd[0], &buf, 1) > 0)
                   write(STDOUT_FILENO, &buf, 1);

               write(STDOUT_FILENO, "\n", 1);
               close(pfd[0]);
               _exit(EXIT_SUCCESS);

           } else {            /* Parent writes argv[1] to pipe */
               close(pfd[0]);          /* Close unused read end */
               write(pfd[1], argv[1], strlen(argv[1]));
               close(pfd[1]);          /* Reader will see EOF */
               wait(NULL);             /* Wait for child */
               exit(EXIT_SUCCESS);
           }
       }



SEE ALSO

       fork(2), read(2), socketpair(2), write(2), pipe(7)



Linux 2.6.7                       2004-06-17                           PIPE(2)


Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Tue Feb 13 02:17:43 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

CPAN man page (4333 hits)
(Suse Linux 10.1)

ssh man page (4186 hits)
(Suse Linux 10.1)

adv_cap_autoneg man page (4167 hits)
(Solaris 10 11_06)

sqlite3 man page (4090 hits)
(openSUSE 10.2)

svn man page (3251 hits)
(FreeBSD 6.2)

startproc man page (1908 hits)
(Suse Linux 10.1)

pprosetup man page (1667 hits)
(Solaris 10 11_06)

netcat man page (1614 hits)
(Suse Linux 10.1)

signal man page (1595 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (1562 hits)
(Solaris 10 11_06)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: Pyrenees Lift Passes :: Illuminated Touch Panel :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum