Как правильно использовать одну функцию обработчика сигналов для нескольких сигналов?

Как лучше всего в C в Linux настроить программу, которая может обрабатывать несколько сигналов POSIX с одной и той же функцией?

Например, в моем коде у меня есть функция-обработчик, которую я хочу в общем случае вызывать при обнаружении сигнала для выполнения некоторых действий:

/* Exit handler function called by sigaction */
void exitHandler( int sig, siginfo_t *siginfo, void *ignore )
{
  printf("*** Got %d signal from %d\n", siginfo->si_signo, siginfo->si_pid);
  loopCounter=0;

  return;
}

Я установил два сигнала для перехвата с помощью индивидуальных вызовов sigaction для каждого сигнала:

/* Set exit handler function for SIGUSR1 , SIGINT (ctrl+c) */
struct sigaction act;
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = exitHandler;
sigaction( SIGUSR1, &act, 0 );
sigaction( SIGINT, &act, 0 );

Это правильный способ настроить такой тип обработки? Есть ли другой способ, где я не буду? Не нужно ли перечислять все возможные номера сигналов?

10
задан ammianus 24 October 2010 в 16:20
поделиться