Linux 2.2.24
Select почему-то не перехватывает все out-of-band data.
Ниже приведенный код по идее должен принимать все exception
на select-е, но реально принимает не более 3-5,
затем ниче не принимается.
int maxfd = 0;
fd_set set;
int status = -1;
struct timeval timeout;
timeout.tv_sec = 5;
timeout.tv_usec = 0;
FD_ZERO(&set);
maxfd = sock;
FD_SET(sock, &set);
for(;;)
{
if( (status = select(maxfd+1, NULL, NULL, &set, &timeout)) > 0 ) {
if( FD_ISSET(sock, &set) ) {
char c = '\0';
if( recv(sock, c, 1, MSG_OOB) <= 0 ) {
printf("Error: recv() failed!");
break;
}
printf("[recv] c: %c\n", c);
}
} else if(status == 0) {
printf("Timeout\n");
} else {
break;
}
}
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Проблема с select (2002)
- Форум Почему? Вопрос по select. (2004)
- Форум вопрос про select() (2013)
- Форум Помогите разобраться с select (C) (2007)
- Форум не работает select () (2005)
- Форум помогите с select/pipe, плииииз... (2003)
- Форум помогите с select/pipe, плииииз... (2003)
- Форум OpenWRT программирование последовательного порта (2019)
- Форум Непонятки с сокетами (2006)
- Форум UART не читает по 1 байту (2005)