Nono, quella parte l'ho momentaneamente archiviata e mi sono rivolto a chi ha scritto il test, sto attendendo una sua risposta. Devo solo terminare il server in maniera pulita, attendendo che tutti i thread terminino. Dunque avevo pensato di mascherare il segnale per tutta la durata dell'inizializzazione, per poi eseguirlo successivamente. Cosa che non posso fare con signal(SIGINT, gestore) per un semplice motivo:

codice:
main(){
signal(SIGINT, SIG_IGN); //non devo essere interrotto in questa fase
init(); 
signal(SIGINT, gestore); //ripristino il gestore per terminare. 
}
Così facendo se ricevessi un segnale durante l'esecuzione di "init", lo perderei, non ricevendo mai il segnale. Questa è una mia supposizione atta a giustificare il consiglio di evitare questa forma di gestione, ma sono lieto di essere smentito..



Forse ho intuito dove ho commesso l'errore...La maschera non devo rimuoverla in quella funzione che ho scritto, ma alla fine dell'inizializzazione, giusto? Dunque schematicamente:

maschero il segnale
initi();
rimuovo maschera