Есть ли способ разобрать или прочитать каталог как файл? - PullRequest
1 голос
/ 08 октября 2009

Это может быть своего рода тривиальный вопрос, но в любом случае мне было интересно, есть ли способ прочитать каталог как файл, который будет использовать open (), close (), read () вместо opendir ( ), closedir (), readdir () ...

Я могу ошибаться, но думаю, что это может ускорить обход каталога.

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 октября 2009

На самом деле, именно так работали каталоги Unix. Каталог действительно был простым файлом, как и любой другой, и вы считали плоский массив (IIRC) 16-байтовых записей, содержащих 4-байтовый номер индекса и 12-байтовое имя файла. opendir () и readdir () были просто библиотечными функциями этого интерфейса.

Но начиная с введения Sun VFS в середине 80-х, больше не было только одной файловой системы. Вместо этого opendir и readdir стали системными вызовами, а способность читать «сырое» содержимое каталога исчезла.

В любом случае, авторы файловой системы очень (!) Усердно работали, чтобы сделать свой код быстрым. Внешне вы ничего не можете сделать, чтобы «ускорить» обратный путь в каталогах на этом уровне. Я думаю, попробуйте использовать меньше файлов.

0 голосов
/ 08 октября 2009

Нет. Если вы не читаете с вывода ls.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...