Ovo isto moze vrlo lako da zvekne:
Code:
do {
FD_ZERO(&rfds);
FD_SET(sockDesc, &rfds);
tv.tv_sec = 0;
tv.tv_usec = 50000;
retval = select(sockDesc + 1, &rfds, NULL, NULL, &tv);
if (retval) {
len += read(sockDesc, buf + len, 20000 - len);
}
} while ((buf[0] != 0x02) || (buf[len - 1] != 0x03));
Znaci len se konstantno uvecava pa moze i da pukne ili da beskonacno blokira. Znaci ovde treba uslov za izlazak da bude
i kad se dotigne procitanih 20000. Ali ovo podrazumeva savrsen drugi kraj.
edit:
i da uslov za izlazak je besmislen jer se ovo moze desiti samo kad se iz cuga sve procita pa ceo marifetluk sa parcijalnim
citanjem prakticno znaci da ce uci u beskonacnu petlju.
[Ovu poruku je menjao Branimir Maksimovic dana 24.09.2020. u 10:27 GMT+1]