Advertisement
Guest User

mosix lab lewy

a guest
Apr 29th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. //Piotr Holewa
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. //zalozenie n podzielne przez k bez reszty
  7. //sume posylamy do rodzica
  8. //sume w potomku
  9. int ciag(int n, int k);
  10. int sum = 0;
  11.  
  12. int oblicz(int i, int n)
  13. {
  14. int a = n*n*n;
  15. int b = ((i*i) - 12);
  16. int licznik = b*b*b;
  17. int mianownik = a*i*i*i;
  18. return licznik/mianownik;
  19. }
  20.  
  21. int main(int argc, char **argv)
  22. {
  23. int n = atoi(argv[1]);
  24.  
  25. int k = atoi(argv[2]);
  26.  
  27. int i = 1;
  28. int j = 0;
  29.  
  30. int suma = 0, e = 0, tmp = 0;
  31.  
  32. int potok[2];
  33. pid_t pid;
  34.  
  35. if(pipe(potok) == -1)
  36. {
  37. perror("blad potoku");
  38. exit(EXIT_FAILURE);
  39. }
  40.  
  41. while(i <= n)
  42. {
  43. for(j=0; j<k; j++)
  44. {
  45. if(i > n)
  46. break;
  47. pid = fork();
  48.  
  49. if(pid == -1)
  50. {
  51. perror("blad fork'a");
  52. exit(EXIT_FAILURE);
  53. }
  54.  
  55. if(pid == 0)
  56. {
  57. e = oblicz(i, n);
  58. write(potok[1], &e, sizeof(e));
  59. exit(EXIT_SUCCES);
  60. }
  61. else
  62. {
  63.  
  64. }
  65. i++;
  66.  
  67. }
  68. }
  69.  
  70. close(potok[1]);
  71. while(read(potok[0], &tmp, sizeof(e)))
  72.  
  73. suma += tmp;
  74. printf("Suma = %d", suma);
  75. return EXIT_SUCCESS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement