Advertisement
candale

Pipes with array

Jun 11th, 2013
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.22 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/wait.h>
  3. #include <signal.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <unistd.h>
  7. #include <fcntl.h>
  8. #include <stdlib.h>
  9.  
  10. int main()
  11. {
  12.     int fdTC[2], fdTS[2];
  13.     if(pipe(fdTC)== -1)
  14.     {
  15.         perror("Could not create pipe\n");
  16.         exit(1);
  17.     }
  18.     if(pipe(fdTS) == -1)
  19.     {
  20.         close(fdTC[0]);
  21.         close(fdTC[1]);
  22.         perror("Could not create pipe\n");
  23.         exit(1);
  24.     }
  25.    
  26.     int ch;
  27.    
  28.     while(1)
  29.     {
  30.         ch= fork();
  31.         if(ch == 0)
  32.         {
  33.             printf("Enter the number of integers: ");
  34.             int n;
  35.             scanf("%d", &n);
  36.             write(fdTS[1], &n, sizeof(int));
  37.             int i=0, c;
  38.             for(i=0;i<n;i++)
  39.             {
  40.                 scanf("%d", &c);
  41.                 write(fdTS[1], &c, sizeof(int));
  42.             }
  43.            
  44.             read(fdTC[0], &c, sizeof(int));
  45.             read(fdTC[0], &i, sizeof(int));
  46.            
  47.             printf("Max: %d Min: %d\n", c, i); 
  48.             exit(0);
  49.         }
  50.         else if(ch > 0)
  51.         {
  52.             int n;
  53.             read(fdTS[0], &n, sizeof(int));
  54.             int i=0, max=-100000, min=100000;
  55.             for(i=0;i<n;i++)
  56.             {
  57.                 int c;
  58.                 read(fdTS[0], &c, sizeof(int));
  59.                 if(c > max)
  60.                     max = c;
  61.                 if(c < min)
  62.                     min = c;
  63.             }
  64.            
  65.             write(fdTC[1], &max, sizeof(int));
  66.             write(fdTC[1], &min, sizeof(int));
  67.         }
  68.         else
  69.             perror("Could not create child\n");
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement