Читаем Linux программирование в примерах полностью

  Дает сводку использования диска для каждого FILE,

  рекурсивно для каталогов.

  Обязательные для длинных опций аргументы являются обязательными

  также и для коротких опций.

-a,  --all              записать число всех файлов, а не только

                        каталогов

     --apparent-size    вывести видимые размеры, а не использование

                        диска; хотя видимый размер обычно меньше, он

                        может быть и больше из-за дыр в файлах,

                        внутренней фрагментации, косвенных блоков и т.п.

-В,  --block-size=SIZE  использовать блоки размером SIZE байтов

-b,  --bytes            эквивалентно '--apparent-size --block-size=1'

-с,  --total            выводит итоговую сумму

-D,  --dereference-args разыменовывать FILE, которые являются

                        символическими ссылками

-h,  --human-readable   вывести размеры в удобном для восприятия

                        формате (например, 1K 234М 2G)

-Н,  --si               так же, но использовать степени 1000, не 1024

-k                      подобно --block-size=1K

-l,  --count-links      считать размеры несколько раз при прямых

                        ссылках

-L,  --dereference      разыменовывать все символические ссылки

-S,  --separate-dirs    не включать размер подкаталогов

-s,  --summarize        отобразить для каждого аргумента лишь итоги

-х,  --one-file-system  пропускать каталоги на различных файловых

                        системах

-X   --exclude-         исключить файлы, подходящие под любой

FILE from=FILE          образец в FILE

     --exclude=PATTERN  исключить файлы, соответствующие PATTERN

     --max-depth=N      вывести итог для каталога (или файла, с --all)

                        только если он находится на N или менее уровней

                        глубже аргумента командной строки;

     --max-depth=0      то же самое, что и --summarize

     --help             отобразить экран справки и выйти

     --version          вывести сведения о версии и выйти

SIZE может быть (или может быть целым, за которым

может следовать это) одним из

следующих: kB 1000, K 1024, MB 1 000 000, M 1 048 576 и т.д.

для G, T, Р, E, Z, Y.

Чтобы еще больше усложнить дело, du использует частную версию nftw(), у которой есть несколько расширений. Сначала имеются дополнительные значения флагов для функции обратного вызова:

FTW_DCHP

Это значение означает, что nftw() не может выполнять 'chdir("..")'.

FTW_DCH

Это значение означает, что nftw() не может использовать chdir() для перехода в сам каталог.

FTW_DPRE

Частная nftw() вызывает для каталогов функцию обратного вызова дважды. Это значение используется при первой встрече с каталогом. После обработки всех нижележащих объектов каталога используется стандартное значение FTW_DP.

Частная nftw() добавляет также в struct FTW новый член, int skip. Если текущий объект является каталогом и функция обратного вызова устанавливает в поле skip ненулевое значение, nftw() не будет больше обрабатывать этот каталог. (Функция обратного вызова должна установить skip таким образом, когда flag равен FTW_DPRE; делать это для FTW_DP слишком поздно.)

С этим объяснением за поясом, вот функция process_file() из du.c. Номера строк приведены относительно начала функции:

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных