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:
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_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. }
Non dovrebbe essere identico a quanto scritto sopra?codice:void gestore_generico(int sig){ global = 0; } int gestore(){ ............ x->sa_handler = gestore_generico; sigaction(SIGTERM, x, NULL); sigaction(SIGINT, x, NULL); }

Rispondi quotando
Tu e i puntatori non ne volete sapere di andare d'accordo...
