Advertisement
Guest User

Untitled

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