Advertisement
SIKER_98

12345

Dec 9th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. #include <sys/wait.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5.  
  6. //drzewko
  7. // 1
  8. // 3 / \2
  9. // 7/ \6 4 / \5
  10. // 10 / 8/ \9
  11.  
  12. // DRZEWKO V2
  13. // / 8
  14. // /5
  15. // / \9
  16. // /2
  17. // \4
  18. //=1
  19. // /6
  20. // \3
  21. // \7
  22. // \10
  23.  
  24. using namespace std;
  25.  
  26. int main()
  27. {
  28. // zmienne do ktorych przypisuje ID procesow
  29. int p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;
  30.  
  31. if((p2=fork())==0){ // utworzenie procesu p2
  32. if((p4=fork())==0){ // utworzenie procesu p4
  33. printf("p4: id proc: %d | id proc. nad.: %d\n",getpid(), getppid()); // wyswietlenie danych o procesie p4
  34. exit(0); // zakonczenie procesu p4
  35. }
  36. wait(NULL); // czekanie na zakonczenie p4
  37. if((p5=fork())==0){/// utworznenie procesu p5
  38. if((p8=fork())==0){ // utworzenie procesu p8
  39. printf("p8: id proc: %d | id proc. nad.: %d\n",getpid(), getppid()); // wyswietlenie danych o procesie p5
  40. exit(0); // zakonczenie procesu p8
  41. }
  42. // dalej opisy analogiczne
  43. wait(NULL);
  44. if((p9=fork())==0){
  45. printf("p9: id proc: %d | id proc. nad.: %d\n",getpid(), getppid());
  46. exit(0);
  47. }
  48. wait(NULL); // synchronizacja
  49. printf("p5: id proc: %d | id proc. nad.: %d | id proc. poch.: %d, %d\n",getpid(), getppid(), p8, p9);
  50. exit(0);
  51. }
  52. wait(NULL);
  53. printf("p2: id proc: %d | id proc. nad.: %d | id proc. poch: %d, %d\n",getpid(), getppid(), p4, p5);
  54. exit(0);
  55. }
  56. wait(NULL); // czekanie na zakonczenie tworzenia poddrzewa procesow p2
  57.  
  58. if((p3=fork())==0){
  59. if((p6=fork())==0){
  60. printf("p6: id proc: %d | id proc. nad.: %d\n",getpid(), getppid());
  61. exit(0);
  62. }
  63. wait(NULL);
  64. if((p7=fork())==0){
  65. if((p10=fork())==0){
  66. printf("p10: id proc: %d | id proc. nad.: %d\n",getpid(), getppid());
  67. exit(0);
  68. }
  69. wait(NULL);
  70. printf("p7: id proc: %d | id proc. nad.: %d | id proc. poch: %d\n",getpid(), getppid(), p10);
  71. exit(0);
  72. }
  73. wait(NULL);
  74. printf("p3: id proc: %d | id proc. nad.: %d | id proc. poch: %d, %d\n",getpid(), getppid(), p6, p7);
  75. exit(0);
  76. }
  77. printf("p1: id proc: %d | id proc. nad.: %d | id proc. poch: %d, %d\n",getpid(), getppid(), p2, p3);
  78. wait(NULL); // czekanie na zakonczenie wszystkich procesow
  79. exit(0); // zakonczenie procesu glownego
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement