Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Pawel Matysek Teleinf.
- #include stdio.h
- #include stdlib.h
- int n;
- int main(int argc, char *argv[])
- {
- int potokIn[2];
- int potokOut[2];
- int pipeError = pipe(potokIn);
- int pipeError2 = pipe(potokOut);
- int i;
- int silniaWynik;
- int sum = 0;
- int numbers[10] = {5, 6,7,8,9,10, 11, 12, 13, 14};
- int number;
- int endOfData = -1;
- if(!pipeError || !pipeError2)
- {
- printf("Error while creating pipe.");
- return 1;
- }
- n = argv[1];
- //Zapisywanie liczb do potoku
- for(i = 0; i<10; ++i)
- {
- number = numbers[i];
- write(potokIn[1], &number, sizeof(number));
- }
- //Zapisywanie znacznika konca danych
- for(i = 0; i < n; ++i)
- {
- write(potokIn[1], &endOfData, sizeof(endOfData));
- }
- //Tworzenie procesow
- for(i = 0; i<n; ++i)
- {
- if(fork() == 0)
- {
- while(1)
- {
- read(potok[0], &number, sizeof(number));
- }
- silniaWynik = silnia(i+1);
- write(potokIn[1], &silniaWynik, sizeof(silniaWynik), exit(0));
- }
- }
- for(i = 0 i<n; ++i)
- {
- read(potok[0], &a, sizeof(a));
- sum = suma + a;
- }
- return 0;
- }
- int silnia(int n)
- {
- if(n == 1)
- {return 1;}
- else
- {return n * silnia(n);}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement