Advertisement
Paszta

Widelce

May 21st, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.03 KB | None | 0 0
  1. Zad2.
  2.  
  3. #include <sys/types.h>
  4. #include <unistd.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. int main(int argc, char** argv)
  9. {
  10. pid_t pid_potomka;
  11. pid_t pidr;
  12. pid_t pidmoj;
  13. int DL_NAPISU = 80;
  14.  
  15. char komunikat[DL_NAPISU];
  16. int powtorzen;
  17. printf("Na razie dziala jeden proces\n");
  18. pid_potomka = fork();
  19. pidmoj = getpid();
  20. pidr = getppid();
  21. switch (pid_potomka)
  22. {
  23. case -1:
  24. printf("rozwidlenie procesu nie powiodlo sie\n");
  25. exit(1);
  26. case 0:
  27. powtorzen = 5;
  28. snprintf(komunikat, DL_NAPISU, "Jestem potomkiem, pid potomka: %d, moj pid : %d ", pid_potomka, pidmoj);
  29. break;
  30. default:
  31. powtorzen = 5;
  32. snprintf(komunikat, DL_NAPISU, "Jestem rodzicem, pid rodzica: %d, moj pid : %d ", pidr, pidmoj);
  33. break;
  34. }
  35. for( ; powtorzen > 0; powtorzen --)
  36. {
  37. puts(komunikat);
  38. sleep(1);
  39. }
  40. }
  41.  
  42. Zad3.
  43. #include <sys/types.h>
  44. #include <unistd.h>
  45. #include <stdio.h>
  46. #include <stdlib.h>
  47.  
  48. int main(int argc, char** argv)
  49. {
  50. pid_t pid_potomka;
  51. pid_t pidr;
  52. pid_t pidmoj;
  53. int DL_NAPISU = 80;
  54.  
  55. char komunikat[DL_NAPISU];
  56. int powtorzen;
  57. printf("Na razie dziala jeden proces\n");
  58. pid_potomka = fork();
  59. pidmoj = getpid();
  60. pidr = getppid();
  61. switch (pid_potomka)
  62. {
  63. case -1:
  64. printf("rozwidlenie procesu nie powiodlo sie\n");
  65. exit(1);
  66. case 0:
  67. powtorzen = 2;
  68. snprintf(komunikat, DL_NAPISU, "Jestem potomkiem, pid potomka: %d, moj pid : %d ", pid_potomka, pidmoj);
  69. break;
  70. default:
  71. powtorzen = 4;
  72. snprintf(komunikat, DL_NAPISU, "Jestem rodzicem, pid rodzica: %d, moj pid : %d ", pidr, pidmoj);
  73. break;
  74. }
  75. for( ; powtorzen > 0; powtorzen --)
  76. {
  77. puts(komunikat);
  78. sleep(1);
  79. }
  80.  
  81. switch(pid_potomka)
  82. {
  83.     case 0:
  84.     system("ps -ef | widelec | grep -v grep "); break;
  85.     printf(" Jestem potomkiem i koncze prace");
  86.     default:
  87.     system("ps -ef | widelec | grep -v grep "); break;
  88.     printf(" Jestem rodzicem i koncze prace");
  89. }
  90. }
  91.  
  92. Zad 4/5
  93.  
  94. #include <sys/types.h>
  95. #include <unistd.h>
  96. #include <stdio.h>
  97. #include <stdlib.h>
  98. #include <sys/wait.h>
  99.  
  100. int main(int argc, char** argv)
  101. {
  102. pid_t pid_potomka;
  103. pid_t pidr;
  104. pid_t pidmoj;
  105. int DL_NAPISU = 80;
  106.  
  107. char komunikat[DL_NAPISU];
  108. int powtorzen;
  109. printf("Na razie dziala jeden proces\n");
  110. pid_potomka = fork();
  111. pidmoj = getpid();
  112. pidr = getppid();
  113. int status = 0;
  114. switch (pid_potomka)
  115. {
  116. case -1:
  117. printf("rozwidlenie procesu nie powiodlo sie\n");
  118. exit(1);
  119. case 0:
  120. powtorzen = 7;
  121. snprintf(komunikat, DL_NAPISU, "Jestem potomkiem, pid potomka: %d, moj pid : %d ", pid_potomka, pidmoj);
  122. break;
  123. default:
  124. powtorzen = 2;
  125. snprintf(komunikat, DL_NAPISU, "Jestem rodzicem, pid rodzica: %d, moj pid : %d ", pidr, pidmoj);
  126. break;
  127. }
  128. for( ; powtorzen > 0; powtorzen --)
  129. {
  130. puts(komunikat);
  131. sleep(1);
  132. }
  133.  
  134. switch(pid_potomka)
  135. {
  136.     case 0:
  137.     printf(" Jestem potomkiem i koncze prace");
  138.     default: pid_potomka =0;
  139.         while(pid_potomka == 0){
  140.     pid_potomka = waitpid(-1, &status, WNOHANG);
  141.     sleep(1); }
  142.     // pid_potomka = wait(&status); --- zadanie 4
  143.     printf(" Potomek o pid : %d wlasnie sie skonczyl", pid_potomka);
  144.     printf(" Jestem rodzicem i koncze prace ");
  145.     break;
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement