обработка нескольких сигналов в c - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу обработать 2 разных сигнала (SIGWINCH, SIGALRM) в течение жизненного цикла программы.Пусть, например, сигнал SIGWINCH создает рамку вокруг края терминала, когда бы он ни вызывался.И SIGALRM выводит текущее время внутри этого кадра.

Как можно обрабатывать оба сигнала одновременно.Я думаю, это должно быть где-то pause.

Вот мои идеи кода для этого.

int main(int argc, char const *argv[])
{
   print_frame();
   struct sigaction sa_winch;
   struct sigaction sa_alarm;
   sa_winch.sa_handler = winch_handler;
   sa_alarm.sa_handler = alarm_handler; 
   alarm(1);
   while(1) {
     if (sigaction(SIGWINCH,&sa_winch, NULL) == -1) {
       perror("SIGWINCH");
     }
     if (sigaction(SIGALRM,&sa_alarm, NULL) == -1 ) {
       perror("SIGALRM");
     }

   }
  return 0;
}

void winch_handler (int signum) {
   print_frame();
}


void alarm_handler(int signum) {
  print_time();
  alarm(1);
}
...