2010-02-10 5 views
5

Я использую вызов POSIX nftw() для перемещения по структуре каталогов. Структура каталогов является плоской - всего 4 файла и нет подкаталогов.Ошибка дескриптора файла в nftw (FTW_CHDIR)?

Однако, когда я называю nftw() много раз на этой плоской директории, то я получаю сообщение об ошибке через некоторое время:

"too many open file handles". 

Оказалось, что это происходит, когда флаг FTW_CHDIR используется.

Вы согласны с тем, что это ошибка в реализации Linux nftw()?

UPDATE

Исправление теперь доступна в GLibC хранилищах.

вот некоторые ссылки на исходный код, который я использовал для тестирования:

UPDATE

  • MacOS-X - также ударил по ошибке
  • solaris9, Solaris10 и AIX 5.3 сделать не есть ошибка

ответ

6

Для меня это выглядит как есть на самом деле что-то не так с nftw реализации на Linux.

Я подал отчет об ошибке, см here

UPDATE: Исправление теперь доступна в GLibC хранилищах.

+0

Вау, это было быстро исправить - http://sourceware.org/git/?p=glibc.git;a=commit;h=247fdf2e2b798378d8aeaac1ee6f4ba0a49f31f3 – mark4o

+0

+1 для подачи ошибки отчет и последующие действия. –

0

Он имеет такое же поведение в Mac OS 10.6.2. Так что, вероятно, какая-то часть спецификации, хотя я не понимаю, как именно.

+0

это интересно. Наш код реального мира - мультиплатформенный - в том числе MacOS. Я собираюсь проверить завтра, если это произойдет и в нашем приложении MacOS. – 2010-02-11 01:39:30

0

Относительно Mac OS: bugreport, представленный Apple в качестве радара # 7640283. (. Нет гиперссылка возможно, к сожалению)

+0

Учитывая, что биты BSD от Apple в основном идентичны FreeBSD, я задаюсь вопросом, унаследована ли она отсюда. – ephemient

Смежные вопросы