home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / unixlib / !UnixLib / test / c / pipetest < prev    next >
Encoding:
Text File  |  1994-03-08  |  802 b   |  62 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #include "sys/unix.h"
  5.  
  6. static void
  7. copyio (void)
  8. {
  9.   char buf[512];
  10.   register int n;
  11.  
  12.   while ((n = read (0, buf, 512)) > 0)
  13.     write (1, buf, n);
  14. }
  15.  
  16. int
  17. main ()
  18. {
  19.   int p[2];
  20.  
  21.   if (pipe (p) < 0)
  22.     {
  23.       perror ("pipe()");
  24.       exit (1);
  25.     }
  26.  
  27.   switch (vfork ())
  28.     {
  29.     case -1:
  30.       perror ("vfork()");
  31.       exit (1);
  32.       break;
  33.     case 0:
  34.       close (p[0]);
  35.       dup2 (p[1], 1);
  36.       close (p[1]);
  37.       copyio ();
  38.       _exit (0);
  39.       break;
  40.     default:
  41.       break;
  42.     }
  43.  
  44.   switch (vfork ())
  45.     {
  46.     case -1:
  47.       perror ("vfork()");
  48.       exit (1);
  49.       break;
  50.     case 0:
  51.       close (p[1]);
  52.       dup2 (p[0], 0);
  53.       close (p[0]);
  54.       copyio ();
  55.       _exit (0);
  56.       break;
  57.     default:
  58.       break;
  59.     }
  60.   return 0;
  61. }
  62.