Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
flagsНабор флагов, объединяемых побитовым ИЛИ, которые указывают, как
nftw()Интерфейс
nftw()nftw()flagsnftw()nftw()flags(*fn)()FTW_nftw()Таблица 8.3. Управляющие флаги для
nftw()| Флаг | Значение |
|---|---|
FTW_CHDIR | При установке перед открытием каждого из каталогов сначала осуществляется переход в него. Это действие более эффективно, но вызывающее приложение должно быть готово оказаться в другом каталоге, когда nftw() |
FTW_DEPTH | При установке осуществляется «сначала глубокий поиск». Это означает, что все файлы и подкаталоги обрабатываются до того, как будет обработан сам каталог |
FTW_MOUNT | При установке остается в той же самой смонтированной файловой системе. Это более специализированная опция |
FTW_PHYS | При установке не следует по символическим ссылкам |
FTW_CHDIRstat()FTW_DEPTHchmod -R u-rx .FTW_PHYSdu8.4.3.2. Функция обратного вызова
nftw()После запуска
nftw()const char *fileИмя текущего обрабатываемого файла (каталога, символической ссылки и т.д.).
const struct stat *sbУказатель на
struct statint flagОдно из нескольких значений флагов (описанных ниже), указывающих, какой это вид файла или была ли ошибка для объекта.
struct FTW *sЭта структура предоставляет две отдельные части информации:
struct FTW { int base; /* Индекс в файле базовой части имени файла */ int level; /* Глубина этого элемента относительно точки отсчета */};Параметр
flagТаблица 8.4. Значения флагов для функции обратного вызова
nftw()| Флаг | Значение |
|---|---|
FTW_F | Объект является обычным файлом |
FTW_D | Объект является каталогом |
FTW_DNR | Объект является каталогом, который нельзя прочесть |
FTW_SL | Объект является символической ссылкой |
FTW_NS | Объект не является символической ссылкой, а stat() |
FTW_DP | Объект является каталогом, элементы которого были уже обработаны. Это может случиться, лишь когда в вызове nftw()FTW_DEPTH |
FTW_SLN | Объект является символической ссылкой, указывающей на несуществующий файл. Это может случиться, лишь когда в вызове nftw()FTW_PHYS |
struct FTW* ss->basfilefilefile + s->bases->levelФункция обратного вызова должна вернуть 0, если все нормально. Любое ненулевое возвращенное значение заставляет
nftw()nftw()longjmp()longjmp()nftw()du
