Как найти общее количество дисковых блоков, занятых текущим каталогом (C UNIX)?

Так что я почти закончил свое назначение, где я в основном воссоздал команду UNIX ls -l, но единственное, чего не хватает, это "total #", который показан в начале команды ls -l, как показано ниже.

total 68

Насколько я понимаю, это общее количество дисковых блоков, занятых каталогом. Есть ли способ найти это значение из самого вызова функции stat? Кроме того, я прошу прощения, если это может быть повторяющийся вопрос, но я не смог найти никаких ресурсов, которые предоставили бы четкую информацию. Заранее спасибо.

1 ответ

Вы должны вычислить эту сумму (из отдельных размеров файлов). Используйте stat(2) в сочетании с чтениями каталога, например opendir (3), readdir (3), closedir и т.п.

Вас может заинтересовать nftw (3).

Есть ли способ найти это значение из самого вызова функции stat?

Нет, потому что вам нужно накапливать размеры.

Кстати, рассмотрим также du (1), по крайней мере, для вдохновения. В Linux это похоже на бесплатное программное обеспечение ls(1), входящее в состав coreutils. Таким образом, вы можете изучить его исходный код (и / или использовать strace(1), чтобы понять, какие системные вызовы он выполняет).

Посмотрите также на этот ответ на связанный вопрос. То, что я написал там, полезно знать для вас.

Другие вопросы по тегам