PDA

View Full Version : [C] Pthread e segnali


echurricane
16-01-2012, 15:37
Ciao a tutti.

Sto scrivendo un server multithread in cui ogni thread, appunto, gestisce una connessione con un client.
Ora vorrei considerare la situazione in cui un client, per qualche motivo, interrompe la connessione. Da quanto ho letto, il segnale SIGPIPE viene consegnato al processo in generale, e non al singolo thread di gestione. Il processo, poi, lo consegna al primo thread che non lo sta bloccando.
E' giusto?

Ma in tal caso, come posso far terminare solo il thread interessato, e non tutto il server?

Avrei anche pensato ad una soluzione (l'ho già scritto altrove sempre qui, ma in relazione ad altro): ignoro esplicitamente il SIGPIPE, controllo il valore di ritorno delle write() e delle read() (sto lavorando su socket TCP), e se è -1 termino semplicemente il thread.
Potrebbe andare?