Всем добрый день.
Писал FTP сервер. Народ в отедел уже юзает его как с месяц и все бы вроде норм, но сегодня обнаружлся косяк.
При записи более 1000 файлов за раз сервак повис.
Я вычислил, что зависание сервера происходит на этапе ожидания клиентского подключения функцией accept() и что возвращается ошибка
EMFILE 24 /* Too many open files */
Заметил, что последнее соединение было с номером файлового дескриптора сокета больше 1000, следовательно процессу позволено открыть не более 1000 файловых дескрипторов.
Сразу скажу, что полсе выполнения какой либо операции через открытый сокет, я его закрываю через close() и никакой ошибки не возвращается.
Внимание вопрос. Как можно обнулить счетчик файловых дескрипторов процессу или какая есть функция для закрытия сокета, которая бы ДЕЙСТВИТЕЛЬНО освобождала файловый дескриптор???