Здравствуйте, netch80, Вы писали:
N>Здравствуйте, keeper-andrew, Вы писали:
KA>>Огромное спасибо. Номер строки показал. Но там мега макрос так что теперь вопросов появилось больше чем ответов. KA>>FD_SET( eis->fd, &eis->rfds ); KA>>из select.h
N>Так это банальный макрос, он ставит в 1 бит, соответствующий fd. N>Надо, сделать assert, что eis_fd >= 0 && eis_fd < FD_SETSIZE. Например, есть вариант, что он равен -1, потому что забыли вовремя инициализировать или, наоборот, закрыли слишком рано. N>Затем посмотреть, что такое eis->rfds. Если это статический fd_set, то тут проблем нет, но если выделяется явно malloc'ом, то посмотреть, сколько выделяется.
Огромное Вам спасибо. Проблема была еще в другом методе, который не закрывал файловые дескрипторы. Поэтому идентификатор файла достигал значений больше 1024. Что и вызывало проблему. У меня другой вопрос. Открытие файла с айдишником большим 1024 это нормально (для линукса), а вот полноценная работа с ним уже невозможна. Это вообще нормально? И как с этим бороться? Я уверен что приложение теоретически будет держать больше 1024 открытых файловых дескриптора: это сервер приложений, для него это нормально.