do{ fd_set rfds; FD_ZERO (&rfds); FD_SET (port->fd, &rfds); tv.tv_sec=0; tv.tv_usec=ITER_WAIT_TIME; int intr=0; switch(select(port->fd+1, &rfds, NULL, NULL, &tv)) { case 1: bytes_readed=(size>14)?read(port->fd,buff,14):read(port->fd,buff,size); if(errno==EINTR){time_req+=ITER_WAIT_TIME; intr++;}; switch(bytes_readed) { case -1: if(errno!=EINTR){syslog(LOG_ERR,"can't read port %s : %s",port->name,strerror(errno));return -1;}; break; case 0: break; default: buff+=bytes_readed; size-=bytes_readed; break; }; break; case 0: break; case -1: if(errno!=EINTR){syslog(LOG_ERR,"ERROR read port %s : %s",port->name,strerror(errno));return -1;} else {time_req+=ITER_WAIT_TIME; intr++;}; break; default: syslog(LOG_ERR,"unexpected ERROR while read port %s : %s",port->name,strerror(errno));return -1; break; }; gettimeofday(&time_cur,NULL); time_out=(time_cur.tv_sec-time_start.tv_sec)*1000000+(time_cur.tv_usec-time_star t.tv_usec); }while((time_out<time_req) && (size>0) && !((time_out>ITER_WAIT_TIME) && (intr==0) && (size==answer_size)));

Ответ на:
комментарий
от idle

Ответ на:
комментарий
от cvv

Ответ на:
комментарий
от idle

Ответ на:
комментарий
от grustnoe

Ответ на:
комментарий
от idle

Ответ на:
комментарий
от idle

Ответ на:
комментарий
от cvv

Ответ на:
комментарий
от idle

Ответ на:
комментарий
от cvv

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум чтение fifo (2006)
- Форум forkpty и read (2004)
- Форум Помогите найти ошибку в С-коде (2004)
- Форум Консольный обмен сообщениями (2017)
- Форум сокет. получить данные (2007)
- Форум libsensors (2011)
- Форум проблема с сокетами [C] (2009)
- Форум fifo между wine приложением и не wine (2015)
- Форум [C] Хидеры и Undefined reference. (2012)
- Форум Проблема установок параметров СОМ порта. (2005)