Advertisement
Guest User

ProgramSO

a guest
Dec 5th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <signal.h>
  4. /* stad bierzemy m.in. funcje "sleep" */
  5. #include <unistd.h>
  6.  
  7. int a = 0;
  8. int b = 0;
  9.  
  10. void porzadki(int signal) //funkcja usuwajaca procesy
  11.  
  12. {
  13. kill(a, signal);
  14. kill(b, signal);
  15. printf("program konczy dzialanie ...\n");
  16. exit(1);
  17. }
  18.  
  19. void signals_handler(int signal) { //obsluga sygnalow
  20. psignal(signal, "\nSygnal");
  21. printf("Numer sygnalu to: %d\n", signal);
  22. kill(getppid(), signal);
  23. return;
  24. }
  25.  
  26. void signals1_handler(int signal) {
  27.  
  28. kill(getppid(), signal);
  29. return;
  30. }
  31.  
  32.  
  33. void sig_handler(int sig) { //obsluga sygnalow
  34.  
  35. sigset_t mask_set;
  36. sigset_t old_set;
  37. sigfillset(&mask_set);
  38. sigdelset(&mask_set, SIGTSTP);
  39. sigdelset(&mask_set, SIGUSR1);
  40. sigprocmask(SIG_SETMASK, &mask_set, &old_set);
  41.  
  42. pause();
  43. sigprocmask(SIG_SETMASK, &old_set, NULL);
  44. return;
  45. }
  46.  
  47.  
  48. int main(void) {
  49.  
  50.  
  51.  
  52. if (fork() == 0) // P1
  53. {
  54. printf("Pierwszy proces: PID: %d\n", a = getpid());
  55. printf("PPID: %d\n\n", getppid());
  56. if (fork() == 0) // P2
  57. {
  58. printf("Drugi proces: PID: %d\n\n", b = getpid());
  59. signal(SIGINT, signals_handler);
  60. signal(SIGUSR1, sig_handler); // ignoruje określony sygnał
  61.  
  62. for (int i=0;i=10; i++) // wypisanie kropek
  63. {
  64. printf("*\n");
  65. sleep(4);
  66. }
  67. system("clear");
  68.  
  69. return 0;
  70. }
  71.  
  72. return 0;
  73. }
  74.  
  75. signal(SIGINT, signals1_handler);
  76. signal(SIGUSR1, sig_handler);
  77.  
  78. signal(SIGQUIT, porzadki); //wywołanie zakonczenia programu
  79.  
  80.  
  81. for (;;)
  82. pause();
  83.  
  84. return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement