2014-02-04 3 views
0

В настоящее время я пишу библиотеку файловой системы и столкнулся с readdir64() при кодировании * nix-части библиотеки. Документация для этой функции говорит, что она принимает dirent64* и добавляет поддержку для больших файловых систем; означает ли это, что он работает только на системах x86-64?* nix - can readdir64 можно использовать в 32-битной системе?

+0

Избегайте этого ... относитесь к нему как к чуме. Внесите 'readdir()' и сделайте его правильным. Не цитируйте меня на этом, но я думаю, что 'readdir64()' используется для 32-битных систем, которые должны работать с большими файлами и поэтому нуждаются в больших размерах, чем 32-битные целые числа. Если это правильно, нет необходимости в 'readdir64()' в 64-битных системах. –

+0

Но в 'dirent.h' для систем с' __USE_FILE_OFFSET64' (64-разрядные системы) 'readdir()' определяется следующим образом: #define readdir readdir64'. Так что это по умолчанию в 64-битных системах. – CoffeeandCode

+0

OK; как я уже сказал, не цитируйте меня. Это зависит от разных системных правил для обратной совместимости и т. Д. Это странно. –

ответ

1

Согласно старым обсуждениям linux с 32-битных компьютеров (http://lists.gnu.org/archive/html/bug-glibc/2001-03/msg00047.html), readdir64 МОЖЕТ использоваться в 32-разрядных системах.

Ульрих Дреппер (разработчик и сопровождающий персонал glibc) также говорит, что ДОЛЖЕН использовать readdir64. Сообщение с начала 2001 года: http://lists.gnu.org/archive/html/bug-glibc/2001-03/msg00048.html