|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 10
|
Uscire dall'attesa della fgets() su stdin
Salve a tutti,
sto realizzando un'applicazione multithread client-server in C (con socket AF_UNIX) e nel client ho un thread che è incaricato di leggere da stdin le richieste dell'utente, utilizzando una fgets(). La gestione dei segnali è stata svolta nel seguente modo: nel caso in cui il processo riceva un segnale di SIGINT o SIGTERM, l'applicazione client deve chiudere "gentilmente", quindi tutti i suoi thread devono terminare.. tutti i thread hanno i segnali mascherati con opzione di SIG_IGN, tranne un thread "handler" che imposta opportune variabili per informare tutti quanti che si deve terminare l'esecuzione. Il problema però è il seguente: il thread di cui vi ho parlato prima rimane in attesa sulla fgets() e non ha la possibilità di essere avvertito, proprio per via di questa attesa indefinita su stdin.. Qualcuno sa come sbloccare l'attesa ed uscire dalla fgets()??? Grazie in anticipo a tutti coloro che mi risponderanno.. Gabriele |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 10
|
ciao, innanzitutto grazie per avermi risposto...
no, non è che il segnale non viene gestito.. il segnale viene correttamente catturato, ma solo dal thread handler... tutti gli altri hanno la maschera per ignorare tutti i segnali e far finta di niente.. è l'handler che avvertirà tutti gli altri impostando opportune variabili. Solo che appunto quel thread, poverino, sta in attesa indefinita sulla fgets... grazie comunque.. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:47.




















