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?