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