Подскажите, а в каком случае read() может сказать Resource temporarily unavailableб хотя poll() вернул для сокета revents=1, т.е. есть что читать по идее ?
Это сетевой сокет, что происходит на другой стороне знать не могу, но после того как read() возвращает ошибку, в поле revents можно увидеть 1
К сожалению не имею возможности сказать, что потом говорит poll() для этого сокета (их много), но интересует вообще почему такое возможно? На даный момент сделал такую обработку - закрытие сокета. Не знаю, насколько верно...
1. Что возвращает read()?
2. Перед read()-ом errno обнуляется?
3. poll(), как впрочем и select() говорит, что сокет "готов к чтению" не
только тогда, когда пришли данные, но и тогда, когда происходит
закрытие соединения "на том конце".
Я думаю нет смысла. Программа нетривиальна, и рассматривать эти куски в отдельности нет смысла. Как показывает практика, действительно это происходит за-за системных или сетевых сбоев. Видать слишком большая нагрузка, ядро говорит что Out of socket memory иногда. Спасибо за советы и подсказки :)