Ciao a tutti, ho una domanda teorica. Sto studiando un frammento di codice che si occupa di mascherare i segnali, in particolare SIGINT e SIGTERM. C'è però un punto che non capisco: utilizza lo stesso handler per entrambi i segnali, ma cambia la firma di questa funzione per i due casi, ovvero:
codice:
void gestore_int(int signum){
//variabile globale
global = 0;
}
void gestore_term(int signum){
//variabile globale
global = 0;
}
int gestore(){
struct sigaction *x;
//maschera tutti i segnali.
//Installa i gestori per SIGINT E SIGTERM
x->sa_handler = gestore_int;
sigaction(SIGTINT, x, NULL);
x->sa_handler = gestore_term;
sigaction(SIGTERM, x, NULL);
//Rimozione della maschera.
}
Essendo il codice di gestore_term e gestore_int identico, perchè non ha optato per utilizzare una funzione "comune" ad entrambi? Posto una bozza di quello che vorrei capire:
codice:
void gestore_generico(int sig){
global = 0;
}
int gestore(){
............
x->sa_handler = gestore_generico;
sigaction(SIGTERM, x, NULL);
sigaction(SIGINT, x, NULL);
}
Non dovrebbe essere identico a quanto scritto sopra?