Salve a tutti, ho realizzato una CHAT multiutente utilizzando S.0. Linux, thread e socket.

Ho un problema da cui non riesco a venirne a capo:

qualora un utente si disconnetta in maniera impropria, tipicamente premento CTRL-c per terminare l'applicazione,
come fa il singolo thread del server a lui associato a determinare che è uscito???
Ho provato a verificare ad esempio se il risultato della read(la funzione che legge i dati del client dal socket) produce
risultati negativi, ma non è questa la soluzione.
Io avevo pensato di incaricare il client di intercettare il segnale SIGINT (pressione dei tasti CTRL-C) e in tal caso di inviare quest'informazione al server
che la potesse quindi manipolare, ma la funzione signal non permette di fare questo, o meglio, non so come passare altri parametri, oltre a lnumero di segnale,
a questa funzione.

Mi aiutate per piacere fornendomi anche soluzioni alternative???

Vi ringrazio.