task2.c 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h> //системная библиотека линукса
  4. #include <signal.h> //бибилиотека для работы с сигналами
  5. typedef void (*myHandler)(int);//переопределение функции
  6. myHandler globalHandlerSIGINT;
  7. myHandler globalHandlerSIGQUIT;
  8. void handler(int sig)
  9. {
  10. switch (sig)
  11. {
  12. case SIGINT:
  13. {
  14. printf("\nНе мешай мне работать\n");
  15. signal(SIGINT, globalHandlerSIGINT);
  16. sleep(2);
  17. break;
  18. }
  19. case SIGQUIT:
  20. {
  21. printf("\nТебе не прервать меня\n");
  22. signal(SIGINT, globalHandlerSIGQUIT);
  23. sleep(2);
  24. break;
  25. }
  26. default:
  27. break;
  28. }
  29. }
  30. int main()
  31. {
  32. globalHandlerSIGINT = signal(SIGINT, handler); //переменная срабатывает только 1 раз
  33. globalHandlerSIGQUIT = signal(SIGQUIT, handler);
  34. while(1)
  35. {
  36. printf(" Я работаю");
  37. }
  38. return 0;
  39. }