Advertisement
SIKER_98

mikolajczyk

Dec 15th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <signal.h>
  5. #include <unistd.h>
  6.  
  7. int stop = 0;
  8. int p0;
  9.  
  10. void ending(int sig){ // inicjator kasowania
  11. stop=1;
  12. }
  13.  
  14. void odliczanie(int czas){
  15.  
  16. printf(" PID: %d\t CZAS: %d\n", getpid(),czas);
  17. sleep(czas);
  18. printf("Minelo: %d sek.\n", czas);
  19. kill(p0, 42); // sygnal, ze odliczanie zakonczylo sie
  20. }
  21.  
  22. int main()
  23. {
  24. p0 = getpid();
  25. printf(" PID: %d\n", getpid());
  26. int ilosc;
  27. printf("Podaj ilosc procesow: ");
  28. scanf("%d", &ilosc);
  29. int i=0;
  30. int p[ilosc];
  31. signal(42,ending);
  32.  
  33. for(i=0; i<ilosc ; i++){ // utworzenie watkow
  34. if((p[i]=fork())==0){
  35. int czas = ((i*rand())%30)+30; // pseudolosowe losowanie
  36. odliczanie(czas);
  37. exit(0);
  38. }
  39.  
  40. }
  41.  
  42. while(stop==0); // stopowanie
  43.  
  44. for(i=0 ; i<ilosc; i++){
  45. printf(" PID-kill: %d\n", p[i]);
  46. kill(p[i],SIGTERM); // zakonczenie procesow potomnych
  47. }
  48.  
  49. return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement