Функция выбора в моем случае всегда возвращает ноль, что является тайм-аутом, и это происходит непрерывно, поэтому загрузка процессора также увеличивается до 98% для моего процесса.Я также попытался установить NULL вместо установки некоторого значения тайм-аута, тем не менее он возвращает ноль.Я также использовал функцию опроса, заменяющую select.Та же проблема возникла и с опросом.
вот часть моего кода;
while(1)
{
value = 0;
selectTimeOut = 0;
memset(buf,0,SIZE);
FD_ZERO(&read_fds);
FD_SET(fd, &read_fds);
struct timeval tv;
tv.tv_sec = 10;
tv.tv_usec = 1000;
fdmax = fd;
//using select to reduce cpu utilization
selectret = select(fdmax + 1,&read_fds,NULL,NULL,&tv);
if (selectret == -1)
{
print_sync("/home/fes/syclogs.txt","Select fails");
exit(0);
}
else
{
print_sync("/home/fes/syclogs.txt","Error set is %s",strerror(errno));
if(!FD_ISSET(fd, &read_fds))
{
print_sync("/home/fes/syclogs.txt","Select Time Out");
selectTimeOut = 1;
}
}
if(selectTimeOut == 1)
continue;
noread = read(fd,buf,SIZE);
}