ГГгггггггг, сильно закомментировал.
Если выдаёт таймаут значит retval равно нулю. Смотрим man select
Цитата:
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ При успешном завершении select и pselect возвращают количество дескрипторов, находящихся в наборах дескрипторов, причем это количество может быть равным нулю, если тайм-аут истекает, а интересующие нас события так и не произошли. При ошибке возвращается -1, а errno устанавливается должным образом; наборы дескрипторов и значение timeout становятся неопределены, поэтому при ошибке нельзя полагаться на их значение.
|
Вот откуда и таймаут.