cteni ze socketu
Ales Horak
ales na rupnw.upol.cz
Středa Listopad 13 16:36:06 CET 2002
Dobry den, po dvoudenim vycerpavajicim zapasu s man strankami a ruznymi
chytrymi knizkami mi dochazi stava a zkousim to zde:
Ctu ze socketu po jednom bajtu v nekonecne smycce. Nevim kolik toho mam
precist, takze mam nastaveny SIGALRM za 5s
vypada to asi takhle:
...
signal(SIGALRM, alarm_handler);
timeout_flag=0;
alarm(5);
while(1)
{
read(sockd, &znak, 1);
if(timeout_flag==1)break;
/* tady je par nedulezitych radku, kde se precteny znak nejak
zpracovava */
}
alarm(0);
...
funkce alarm_handler() pouze zmeni hodnotu globalni promenne timeout_flag
z 0 na 1.
Ten alarm prokazatelne probehne (hodnota timeout_flag se po 5s opravdu
zmeni), ale po ukonceni funkce alarm_handler se rizeni vrati zpet k read(),
misto, aby pokracovalo na dalsim radku "if(timeout_flag==..."
takze program zustane navzdy zablokovan funkci read() (pote co do socketu z
druhe strany uz nic dalsiho neprichazi.
Co delam blbe ?
Diky za kazde nakopnuti spravnym smerem.
jo - jeste verze gcc je 3.2 (RedHat 8.0)
--
Ales Horak
Palacky University Library Sys_admin(void:)
http://lib.upol.cz/cgi-bin/k6
Linux is like teepee. No windows, no gates, Apache inside...
Další informace o konferenci Linux