Arpeda
20-06-2004, 23:59
Ciao ragazzi,
sto implementando un server per un semplice gioco. Per ogni connessione che arriva creo un thread. Il problema mi si presenza se provo a chiudere un client, in questo caso il server riceve SIGPIPE, che ahimè non riesco a gestire correttamente, ed ottengo la chiusura del processo. Ora vi chiedo 2 cose:
1) è una buona idea bloccare o ignorare questo tipo di segnale? se non lo è,avete alternative?
2) se la 1 è affermativa come posso fare?
ho provato ad usare
sigemptyset(&act);
sigaddset( &act, SIGPIPE );
pthread_sigmask(SIG_BLOCK, &act, NULL);
in modo da cambiare il modo di gestire il segnale, ma tutto quello che sono riuscito ad ottenere è una mezza vittoria. In pratica Il segnale non mi chiude il processo come mi accadeva in precedenza, ma la cpu schizza al 70%, e l'unica cosa da fare è killare il server :(
Sapete aiutarmi?
Ciao
Arpeda
Ps. in allegato mi metto il codice che ho fatto fin'ora, il file è solo rinominato non zippato
sto implementando un server per un semplice gioco. Per ogni connessione che arriva creo un thread. Il problema mi si presenza se provo a chiudere un client, in questo caso il server riceve SIGPIPE, che ahimè non riesco a gestire correttamente, ed ottengo la chiusura del processo. Ora vi chiedo 2 cose:
1) è una buona idea bloccare o ignorare questo tipo di segnale? se non lo è,avete alternative?
2) se la 1 è affermativa come posso fare?
ho provato ad usare
sigemptyset(&act);
sigaddset( &act, SIGPIPE );
pthread_sigmask(SIG_BLOCK, &act, NULL);
in modo da cambiare il modo di gestire il segnale, ma tutto quello che sono riuscito ad ottenere è una mezza vittoria. In pratica Il segnale non mi chiude il processo come mi accadeva in precedenza, ma la cpu schizza al 70%, e l'unica cosa da fare è killare il server :(
Sapete aiutarmi?
Ciao
Arpeda
Ps. in allegato mi metto il codice che ho fatto fin'ora, il file è solo rinominato non zippato