Роббинс Арнольд
Шрифт:
В дополнение к
8.4.3. Перемещение по иерархии:
Обычной задачей программирования является обработка целых иерархий каталогов: выполнение действий над каждым файлом и каждым каталогом и подкаталогом в целостном дереве. Рассмотрите, например, команду
На данный момент вы знаете достаточно, чтобы написать собственный код для открывания и чтения каталогов вручную, вызова
8.4.3.1. Интерфейс
Чтобы избавиться от проблем, System V предложила функцию
Со временем стало ясно, что интерфейс
84
POSIX стандартизировал
А вот аргументы:
Строка с именем отправной точки иерархии для обработки.
Указатель на функцию с данными аргументами. Эта функция вызывается для каждого объекта в иерархии. Подробности ниже.
Этот аргумент назван неверно. Чтобы избежать выхода за пределы дескрипторов файлов,
Набор флагов, объединяемых побитовым ИЛИ, которые указывают, как
Интерфейс
Таблица 8.3. Управляющие флаги для
Флаг | Значение |
---|---|
FTW_CHDIR | При установке перед открытием каждого из каталогов сначала осуществляется переход в него. Это действие более эффективно, но вызывающее приложение должно быть готово оказаться в другом каталоге, когда nftw завершится |
FTW_DEPTH | При установке осуществляется «сначала глубокий поиск». Это означает, что все файлы и подкаталоги обрабатываются до того, как будет обработан сам каталог |
FTW_MOUNT | При установке остается в той же самой смонтированной файловой системе. Это более специализированная опция |
FTW_PHYS | При установке не следует по символическим ссылкам |
85
У некоторых старых версий GLIBC были проблемы с FTW_CHDIR. Это не относится к GLIBC 2.3.2 и более поздним, и маловероятно, что вы столкнетесь с проблемами — Примеч. автора.
86
Мы не знаем, почему кому-нибудь может понадобиться делать такое изменение, но философия «что вы просили, то и получили» применяется и здесь! — Примеч. автора.