"man select"
на русском в Linux - не верно
на английском в Linux - немногим лучше
в MSDN(Microsoft) - ещё лучше
ошибки две:
1. select ждёт не ИЗМЕНЕНИЯ_состояния сокета
а именно СОСТОЯНИЯ
их три:
а) готовность к чтению (можно выполнить "read")
б) готовность к записи (можно выполнить "write")
в) ошибка
2. select не работает с обычными файлами
это надо чётко указать в начале
использованная литература:
Стивенс "UNIX разработка сетевых приложений" Питер 2007г. 1039с.
в главах 6 и 16 описана фукция "select"
это ключевая фукция для работы с сетью (точнее: с сокетами)
т.к. остальные функции известны программисту по работе с файлами
(open,close,read,write)
Stevens W.R. (Стивенс)
автор нескольких книг по UNIX
хотя они относительно старые,
т.к. Стивенс отправился в лучший мир в 1999г
зато во многом верны и сейчас
в частности для Линукс и Windows