Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.16 KB | None | 0 0
  1. //Pawel Matysek Teleinf.
  2. #include stdio.h
  3. #include stdlib.h
  4. int n;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.     int potokIn[2];
  9.     int potokOut[2];
  10.     int pipeError = pipe(potokIn);
  11.     int pipeError2 = pipe(potokOut);
  12.     int i;
  13.     int silniaWynik;
  14.     int sum = 0;
  15.     int numbers[10] = {5, 6,7,8,9,10, 11, 12, 13, 14};
  16.     int number;
  17.     int endOfData = -1;
  18.    
  19.     if(!pipeError || !pipeError2)
  20.     {
  21.         printf("Error while creating pipe.");
  22.         return 1;
  23.     }
  24.     n = argv[1];
  25.    
  26.     //Zapisywanie liczb do potoku
  27.     for(i = 0; i<10; ++i)
  28.     {
  29.         number = numbers[i];
  30.         write(potokIn[1], &number, sizeof(number));
  31.     }
  32.    
  33.     //Zapisywanie znacznika konca danych
  34.     for(i = 0; i < n; ++i)
  35.     {
  36.         write(potokIn[1], &endOfData, sizeof(endOfData));
  37.     }
  38.    
  39.     //Tworzenie procesow
  40.     for(i = 0; i<n; ++i)
  41.     {
  42.         if(fork() == 0)
  43.         {
  44.             while(1)
  45.             {
  46.                 read(potok[0], &number, sizeof(number));
  47.                    
  48.             }
  49.             silniaWynik = silnia(i+1);
  50.             write(potokIn[1], &silniaWynik, sizeof(silniaWynik), exit(0));
  51.         }
  52.     }
  53.    
  54.     for(i = 0 i<n; ++i)
  55.     {
  56.         read(potok[0], &a, sizeof(a));
  57.         sum = suma + a;
  58.     }
  59.    
  60.    
  61.     return 0;
  62. }
  63.  
  64. int silnia(int n)
  65. {
  66.     if(n == 1)
  67.         {return 1;}
  68.     else
  69.         {return n * silnia(n);}
  70.    
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement