Inkabb select(). A nonblock tulajdonsag magara az fd-re szinten lehet jo/hasznos, de soros eszkozokre, foleg ha alacsony a baud rate, akkor inkabb select() + valami fizikailag relevans timeout. Azaz valami ilyesmi:
struct timeval tv;
fd_set set;
tv.tv_sec=0;
tv.tv_usec=10000;
FD_ZERO(&set);
FD_SET(dfd,&set);
r=select(dfd+1,&set,NULL,NULL,&tv);
Ha r=0, akkor timeout volt (10 millisec-en belul nem jott adat), ha 0<r es a &set-ben benne marad(t) a dfd, akkor meg van adat. Ezutobbira lasd: FD_ISSET(dfd,&set) es hasonloak.