Advertisement
Guest User

poPoprawkachBoNieByloCudzy

a guest
Jan 17th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.85 KB | None | 0 0
  1. /* porgram operujacy na procesach
  2. Michal Szachno
  3. frupa: I8X1N1
  4. */
  5.  
  6.  
  7. #inculde <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include <sys/types.h>
  11. #include <sys/wait.h>
  12.  
  13. int main()
  14. {
  15.  
  16. int pid3 = fork(); // przypisanie do zmiennej wartosci zwracanej przez fork
  17. int pid2, pid4, pid5, pid6, pid7, pid8, pid9, pid10; // przechowywanie ID procesow
  18.  
  19.  
  20. // case 0: zwraca zero oraz swój pisd do procesu nadrzednego
  21. // case -1: zwraca blad
  22. // default: procesowanie procesu nadrzednego
  23.  
  24.  
  25. switch (pid3)
  26. {
  27. case 0:
  28.  
  29. pid5=fork(); // powolanie procesu potomnego P5
  30. switch(pid5)
  31. {
  32. case 0:
  33. printf("P5: %d: %d\n", getpid(), getppid());
  34. exit(0);
  35. break;
  36. case -1:
  37. printf("Brak funkcji fork\n");
  38. exit(-1);
  39. break;
  40. default:
  41. printf("P3: %d: %d: %d\n", getpid(), getppid(), pid5);
  42. wait(NULL); // oczekkiwanie na zakonczenie procesu optomnego
  43. exit(0);
  44. break;
  45. }
  46.  
  47. case -1:
  48. printf("Brak funkcji fork\n");
  49. exit(1);
  50. break;
  51. default:
  52.  
  53. pid4=fork() //tworzenie kolejnego procesu potomnego z P1
  54. switch(pid4)
  55. {
  56. case 0: // proces potomny P4
  57. pid6= fork();
  58. switch(pid6)
  59. {
  60. case 0:// fork zwraca 0 w procesie potomnym
  61.  
  62. pid8=fork();// proces podrzedny P8 utworzony; nadrzedny P6
  63. switch(pid8)
  64. {
  65. case 0:// proces P8
  66. printf("P8: %d: %d \n", getpid(), geetppid());
  67. exit(0);
  68. break;
  69. case -1:
  70. printf("Brak funkcji fork\n");
  71. exit(1);
  72. break;
  73. default:
  74.  
  75. pid9=fork();
  76. switch(pid9)
  77. {
  78. case 0:
  79. printf("P9: %d: %d \n", getpid(), geetppid());
  80. exit(0);
  81. break;
  82. case -1:
  83. printf("Brak funkcji fork\n");
  84. exit(1);
  85. break;
  86. default:
  87.  
  88. pid10=fork();
  89. switch(pid10)
  90. {
  91. case 0:
  92. printf("P10: %d: %d \n", getpid(), geetppid());
  93. exit(0);
  94. break;
  95. case -1:
  96. printf("Brak funkcji fork\n");
  97. exit(1);
  98. break;
  99. default:
  100. printf("P6: %d: %d: %d, %d, %d\n", getpid(), getppid(), pid8, pid9, pid10);
  101. wait(NULL);// oczekiwanie na zakonczenie procesow potomnych P8, P9, P10
  102. wait(NULL);
  103. wait(NULL);
  104. exit(0);
  105. break;
  106. }
  107.  
  108. case -1:
  109. printf("Brak funkcji fork\n");
  110. exit(1);
  111. break;
  112. default:
  113.  
  114. pid7=fork();
  115. switch(pid7)
  116. {
  117. case 0:
  118. printf("P7: %d: %d\n", getpid(), getppid());
  119. exit(0);
  120. break;
  121. case -1;
  122. printf("Brak funkcji fork\n");
  123. exit(1);
  124. break;
  125. default:
  126. printf("P4: %d: %d, %d, %d\n", getpid(), getppid(), pid6, pid7);
  127. wait(NULL);// oczekiwanie na zakonczenie procesow potomnych P6, P7
  128. wait(NULL);
  129. exit(0);
  130. break;
  131. }
  132. case -1:
  133. printf("Brak funkcji fork");
  134. exit(1);
  135. break;
  136.  
  137. default:
  138.  
  139. pid2=fork(); // tworzenie procesu potomnego z P1
  140. switch(pid2)
  141. {
  142. case 0:
  143. printf("P2: %d: %d\n", getpid(), getppid());
  144. exit(0);
  145. break;
  146. case -1:
  147. printf("Brak funkcji fork");
  148. exit(1);
  149. break;
  150. default: //dane z P1
  151. printf("P1: %d: %d: %d, %d, %d\n", getpid(), getppid(), pid2, pid3, pid4);
  152. wait(NULL);// oczekiwanie na zakonczenie pracy procesow potomnych P2, P3, P4
  153. wait(NULL);
  154. wait(NULL);
  155. exit(0);
  156. break;
  157.  
  158.  
  159. }
  160. }
  161.  
  162. }
  163. }
  164.  
  165.  
  166. }
  167.  
  168.  
  169.  
  170.  
  171. }// pierwszy switch
  172.  
  173. return 0;
  174. } // main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement