Advertisement
Guest User

tge5t4

a guest
May 20th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. sig1:
  2. #include <signal.h>
  3. #include <stdio.h>
  4. #include <unistd.h>
  5. #include <stdlib.h>
  6.  
  7. char napisy[3][80]={"Ha! Ha! Ha! To tylko sygnał powierzchniowy!\n",
  8.                     "Tylko proces %d śmieje sie sygnałowi %d prosto w twarz!\n",
  9.                     "Auć - to bolało!\n"};
  10.  
  11. int nr_napisu = 0;
  12.  
  13. void obsluga_sig_int(int sig)
  14. {
  15.     printf(napisy[nr_napisu], getpid(), sig);
  16.     nr_napisu = ((nr_napisu  + 1) % 3);
  17. }
  18.  
  19. int main(){
  20.     int t = 0;
  21.     //signal(SIGQUIT, obsluga_sig_int);
  22.     sigset_t tset;
  23.     sigset_t dset;
  24.     sigemptyset(&tset);
  25.     sigaddset(&tset, SIGINT);
  26.     sigaddset(&tset, SIGQUIT);
  27.     struct sigaction sac;
  28.     sac.sa_handler = obsluga_sig_int;
  29.     sac.sa_mask = tset;
  30.     sac.sa_flags = 0;
  31.     sigaction(SIGINT, &sac, NULL);
  32.     sigprocmask(SIG_BLOCK, &tset, NULL);
  33.    
  34.     while (1){
  35.         printf("Cześć tu proces: %d\n", getpid());
  36.         t++;
  37.         if(t == 5)
  38.         {
  39.             sigpending(&dset);
  40.             printf("Odblokowano sygnały. Zablokowane sygnały: \n");
  41.             if(sigismember(&dset, SIGINT)) printf("SIGINT\n");
  42.             if(sigismember(&dset, SIGQUIT)) printf("SIGQUIT\n");
  43.             if(!sigismember(&dset, SIGINT) && !sigismember(&dset, SIGQUIT)) printf("Nie zablokowano żadnych sygnałów\n");
  44.             sigprocmask(SIG_UNBLOCK, &tset, NULL);
  45.         }
  46.         sleep(1);
  47.     }
  48.     return 0;
  49. }
  50. sig2:
  51. #include <signal.h>
  52. #include <stdio.h>
  53. #include <unistd.h>
  54. #include <stdlib.h>
  55.  
  56. char napisy[3][80]={"Ha! Ha! Ha! To tylko sygnał powierzchniowy!\n",
  57.                     "Tylko proces %d śmieje sie sygnałowi %d prosto w twarz!\n",
  58.                     "Auć - to bolało!\n"};
  59.  
  60. int nr_napisu = 0;
  61.  
  62. void obsluga_sig_int(int sig)
  63. {
  64.     printf(napisy[nr_napisu], getpid(), sig);
  65.     nr_napisu = ((nr_napisu  + 1) % 3);
  66.     sleep(5);
  67. }
  68.  
  69. int main(){
  70.     //signal(SIGQUIT, obsluga_sig_int);
  71.     sigset_t tset;
  72.     sigemptyset(&tset);
  73.     sigaddset(&tset, SIGINT);
  74.     sigaddset(&tset, SIGQUIT);
  75.     struct sigaction sac = {obsluga_sig_int, tset, 0};
  76.     sigaction(SIGINT, &sac, NULL);
  77.    
  78.     while (1){
  79.         printf("Cześć tu proces: %d\n", getpid());
  80.         sleep(1);
  81.     }
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement