Читать книгу 📗 "Linux программирование в примерах - Роббинс Арнольд"
Наконец, переменная
rflg-r-rrflgСледующий псевдокод описывает логику
compar()ls.c407 if <i>ls должна прочесть каталоги</i> # dflg == 0408 if <i>p1 аргумент командной строки и p1 каталог</i>409 if <i>p2 не аргумент командной строки и не каталог</i>410 return 1 # первый идет после второго else <i>перейти на тест времени</i>411 else # p1 не каталог командной строки412 if <i>p2 аргумент командной строки и каталог</i>413 return -1 # первый идет перед вторым else <i>перейти на тест времени</i>416 if <i>сортировка основана на времени</i> # tflg равно true # сравнить времена:417 if <i>время p2 равно времени p1</i>418 return 0419 if <i>время p2 > времени p1</i>420 return <i>значение rflg (положительное или отрицательное)</i> # время p2 < времени p1421 return <i>противоположное rflg значение (положительное или отрицательное)</i>423 <i>Умножить rflg на результат strcmp()</i>424 <i>для двух имен и вернуть результат</i>Аргументы
strcmp()lnstruct lbuf7.3. Резюме
• V7
ls• Наиболее примечательным внешним различием между V7
lsls-а-l-R• Управление
fliststruct lbufstruct stat• Некоторые части
lsmakename()Упражнения
1. Рассмотрите функцию
getname()/etc/passwdjoe:xyzzy:2160:10:Joe User:/usr/joe:/bin/shjane:zzyxx:216:12:Jane User:/usr/jane:/bin/sh2. Рассмотрите функцию
makename()sprintf()3. Являются ли строки 319–320 в
readdir()4. Возьмите программу
statnblock()lsst_blocksstruct stat5. Как бы вы оценили V7
lsmalloc()free()6. Как вы оценили бы ясность кода V7
ls7. Очертите шаги, которые нужно было бы сделать, чтобы адаптировать V7
lsГлава 8
Файловые системы и обходы каталогов
Данная глава завершает обсуждение файловых систем и каталогов Linux (и Unix). Сначала мы опишем, как к логическому пространству имен файловой системы добавляется (и удаляется) раздел диска, содержащий файловую систему, таким образом, что в общем пользователю не нужно ни знать, ни заботиться о месте физического размещения файла, вместе с API для работы с файловыми системами
Затем мы опишем, как перемещаться по иерархическому пространству имен файлов, как получать полный путь текущего рабочего каталога и как без труда обрабатывать произвольные иерархии (деревья) каталогов, используя функцию
nftw()chroot()8.1. Монтирование и демонтирование файловых систем
Унифицированное иерархическое пространство имен файлов является большим достоинством дизайна Linux/Unix. Данный раздел рассматривает, как административные файлы, команды и операционная система объединяются для построения пространства имен из отдельных физических устройств, содержащих данные и служебные данные файлов.
8.1.1. Обзор основ
В главе 5 «Каталоги и служебные данные файлов», были представлены индексы для служебных данных файлов и описано, как элементы каталогов связывают имена файлов с индексами В ней также были описаны разделы и файловые системы, и вы видели, что прямые ссылки ограничены работой в пределах одной файловой системы, поскольку каталоги содержат лишь номера индексов, а последние не уникальны среди всего набора использующихся файловых систем.