хранение справочников детской директории - PullRequest
0 голосов
/ 03 ноября 2011

В проекте программа должна хранить ссылки / идентификаторы каждого дочернего элемента каталога в своих переменных (скажем, в стеке). программа не должна снова выполнять pathlookup для каждого дочернего элемента после прочтения каталога.

Я не очень уверен, как это сделать. Потому что, если номера инодов сохранены, соответствующий файл / каталог не может быть доступен по праву инода?

Буду благодарен за некоторые указатели

Спасибо

Редактировать: Мои причины для "не должен снова выполнять pathlookup" ..... поток сначала читает дерево файловой системы в глубину, и когда он читает каталог ... идентификаторы его дочерних элементов сохраняются, чтобы следовать это в глубину первым способом снова. Я сохраняю идентификаторы потому, что прочитанный каталог может быть перемещен в другую часть файловой системы параллельным потоком, а поддерево в перемещенном каталоге может быть не прочитано, так как эта часть дерева уже пройдена.

1 Ответ

1 голос
/ 03 ноября 2011

Это пахнет домашней работой, только раньше не было способа сделать это; это возможно сейчас, но только с использованием довольно нового системного вызова openat и его друзей (см. список «см. также» внизу этой страницы). Вы правы в том, что вы не можете открыть файл по его номеру inode; но используя функции *at, вы можете открыть файл по имени относительно каталога , для которого у вас есть дескриптор открытого файла ( не a DIR*).

...