Advertisement
Guest User

signali

a guest
Jan 2nd, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.22 KB | None | 0 0
  1. #define _DEFAULT_SOURCE
  2. #include <sys/stat.h>
  3. #include <fcntl.h>
  4. #include <unistd.h>
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <stdbool.h>
  9. #include <signal.h>
  10. #include <stdint.h>
  11. #include <string.h>
  12. #include <ctype.h>
  13.  
  14. #define UNUSED_FUNC_ARG(x) ((void)x)
  15.  
  16. #define osAssert(cond, msg) osErrorFatal(cond, msg, __FILE__, __LINE__)
  17.  
  18. void obrni_rec(char* niska);
  19. void zameni_mala_sa_velikim(char* niska);
  20. void osErrorFatal(bool cond, const char *msg, const char *file, int line);
  21. void sigUsr1Handler(int sigNum);
  22. void sigUsr2Handler(int sigNum);
  23. void sigTermHandler(int sigNum);
  24.  
  25.  
  26. int sig_usr1 = 0;
  27. int sig_usr2 = 0;
  28. int terminate = 0;
  29.  
  30. int main(int argc, char** argv)
  31. {
  32.     fprintf(stderr, "%d\n", getpid());
  33.     osAssert(SIG_ERR != signal(SIGUSR1, sigUsr1Handler), "signal failed");
  34.     osAssert(SIG_ERR != signal(SIGUSR2, sigUsr2Handler), "signal failed");
  35.     osAssert(SIG_ERR != signal(SIGTERM, sigTermHandler), "signal failed");
  36.     char rec[64];
  37.    
  38.     while(!terminate)
  39.     {
  40.         scanf("%s", rec);
  41.         pause();
  42.  
  43.         if(sig_usr1 > 0)
  44.         {
  45.             obrni_rec(rec);
  46.             sig_usr1 = 0;
  47.         }
  48.         if(sig_usr2 > 0)
  49.         {
  50.             zameni_mala_sa_velikim(rec);
  51.             sig_usr2 = 0;
  52.         }
  53.     }
  54.     return 0;    
  55. }
  56.  
  57. void sigUsr1Handler(int sigNum)
  58. {
  59.     UNUSED_FUNC_ARG(sigNum);
  60.     sig_usr1++;
  61. }
  62.  
  63. void sigUsr2Handler(int sigNum)
  64. {
  65.     UNUSED_FUNC_ARG(sigNum);
  66.     sig_usr2++;
  67. }
  68.  
  69. void sigTermHandler(int sigNum)
  70. {
  71.     UNUSED_FUNC_ARG(sigNum);
  72.     terminate = 1;
  73. }
  74.  
  75. void osErrorFatal(bool cond, const char *msg, const char *file, int line)
  76. {
  77.    if (!cond) {
  78.      perror(msg);
  79.      fprintf(stderr, "%s:%d\n", file, line);
  80.      exit(EXIT_FAILURE);
  81.    }
  82. }
  83.  
  84.  
  85. void obrni_rec(char* niska)
  86. {
  87.     int duzina = strlen(niska);
  88.     int i;
  89.     for(i=0;i<duzina/2;i++)
  90.     {
  91.         char tmp = niska[i];
  92.         niska[i] = niska[duzina-1-i];
  93.         niska[duzina-1-i] = tmp;
  94.     }
  95.     printf("%s\n", niska);
  96. }
  97.  
  98. void zameni_mala_sa_velikim(char* niska)
  99. {
  100.     int i;
  101.     for(i=0; niska[i]; i++)
  102.     {
  103.         if(islower(niska[i]))
  104.         {
  105.             niska[i] = toupper(niska[i]);
  106.         }
  107.     }
  108.     printf("%s\n", niska);
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement