Proprio in questo momento stavo pensando ad un'implementazione alternativa che mi permetta di aggirare l'accept bloccate. Utilizzando le istruzioni di jump, potrei restituire il controllo dopo il segnale all'istruzione successiva al ciclo. Ovvero:

codice:
if(setjmp(env) == 0){
	while(run){ 
       }
}
else{
chiusura del server. 
}
Segnali:
codice:
void signal(int sig){
run = 0; 
longjmp(env,1); 
}
In questo modo il server arriva comunque al return, ma non termina ugualmente il server.
Dovendo usare la exit nel gestore dei segnali, dovrei utilizzare un'altra funzione che mi effettui la chiusura gentile, prima della chiamata exit, giusto? Intendo:
codice:
void signal(int sig){
run = 0; 
chiusuraGentile(); 
exit(); 
}