mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

FTW(3C)                                                 FTW(3C)

НАЗВАНИЕ 
        ftw - обход дерева файлов

СИНТАКСИС 
        #include 
        
        int ftw (path, fn, depth)
        char *path;
        int (*fn) ( );
        int depth;

ОПИСАНИЕ 
        Функция ftw рекурсивно обходит иерархию каталогов, име-
        ющую своим корнем каталог с маршрутным именем, на кото-
        рое указывает аргумент path. Для каждого объекта иерар-
        хии ftw вызывает функцию fn, передавая ей три  аргумен-
        та: указатель на цепочку символов, ограниченную нулевым
        байтом и содержащую имя объекта; указатель на структуру
        stat [см. stat(2)], содержащую информацию  об  объекте;
        тип объекта (целое число). Возможны следующие  значения
        типа объекта, описанные во включаемом файле :

        FTW_F    Обычный файл.

        FTW_D    Каталог.

        FTW_DNR  Каталог, недоступный на чтение.

        FTW_NS   Объект, для которого stat не может выполниться
                 успешно.

        Если тип объекта есть FTW_DNR, подкаталоги этого  ката-
        лога не  просматриваются.  Если  тип  есть  FTW_NS,  то
        структура stat будет содержать мусор. Примером объекта,
        который вызовет передачу fn типа FTW_NS, является  файл
        в каталоге, доступном на чтение, но недоступном для по-
        иска.

        Функция ftw обрабатывает каталог перед  обработкой  его
        элементов.

        Обход завершится тогда, когда или  будет  обойдено  все
        дерево, или функция fn  возвратит  ненулевое  значение,
        или возникнет ошибка при работе самой функции ftw (нап-
        ример, ошибка ввода/вывода). Если дерево обойдено  пол-
        ностью, ftw возвращает 0. Если fn  возвратит  ненулевое
        значение, то ftw прекратит обход и выдаст это значение.
        Если будет обнаружена ошибка при работе  самой  функции
        ftw, то она возвратит -1 и соответствующим образом  ус-
        тановит значение переменной errno.

        Функция ftw использует по одному дескриптору  файла  на
        каждый уровень дерева. Аргумент depth ограничивает  ко-
        личество используемых таким образом дескрипторов.  Если
        он не больше нуля,  то  используется  один  дескриптор.
        Значение аргумента depth не должно быть больше, чем ко-
        личество  доступных  для  использования   дескрипторов.
        Функция ftw будет работать быстрее, если значение depth
        не меньше глубины дерева.

СМ. ТАКЖЕ 
        stat(2), malloc(3C).

СЮРПРИЗЫ 
        Так как функция ftw рекурсивна, возможно аварийное  за-
        вершение работы из-за выхода за границы памяти при  об-
        ходе слишком глубокой файловой структуры.

ОГРАНИЧЕНИЯ 
        Функция ftw использует для динамического выделения  па-
        мяти malloc(3C). Если ftw завершена насильственно, нап-
        ример, при выполнении из fn вызова longjmp или по  пре-
        рыванию, то она не имеет возможности освободить память,
        так что выделенная память останется занятой. Безопасный
        способ обработки прерываний заключается  в  том,  чтобы
        зафиксировать факт получения прерывания и при ближайшем
        вызове fn заставить ее вернуть ненулевое значение.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк