PDA

View Full Version : [C unix] problema con system call bloccanti


Daniel Dolphin
20-07-2012, 13:58
Salve, ho un piccolo problema:

sto creando una semplicissima applicazione server in C unix che si connette tramite un socket stream ai vai client. Quando arriva un sigint questa applicazione dovrebbe terminare chiudendo tutti i socket attivi. Il mio problema è che sia l'accept che la read (system call bloccanti) non si sbloccano alla ricezione del segnale (io da teoria sapevo che terminata la gestione del segnale tutte le call bloccanti dovevano sbloccarsi con codice di errore). l'accept sono riuscito a sbloccarla manualmente chiudendo il socket all'interno della gestione del sigint ma non posso chiudere il socket di tutti i client dal sigint. come posso sbloccare la read anche se non è arrivato niente? il problema mi si presenta anche con il sigalarm (vorrei poter terminare la connessione se resta inattiva per un tot)

Grazie in anticipo.