Qual è il modo migliore in C su Linux per impostare un programma in grado di gestire più segnali POSIX con la stessa funzione?Qual è il modo corretto per avere una singola funzione di Signal Handler per più segnali?
Per esempio nel mio codice ho una funzione di gestione che voglio genericamente chiamata quando mai un segnale viene catturato per eseguire alcune azioni:
/* 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;
}
ho istituito due segnali di catturare avendo sigaction individuale richiede per ogni segnale:
/* 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);
E 'questo il modo corretto di impostare questo tipo di gestione? C'è un altro modo in cui non devo enumerare tutti i possibili numeri di segnale?
Grazie, è una buona idea. Credo di poter continuare a enumerare i segnali che mi piacerebbe catturare, dato che sono nuovo di C ero curioso di sapere se mi mancava qualcosa. – ammianus