Программирование в стандарте POSIX


Получение информации о файлах и файловых системах - часть 10


Среди флагов, входящих в шкалу f_flag, выделим ST_RDONLY - признак того, что файловая система   смонтирована только на чтение.

В пример 4.19 приведен исходный текст программы, которая выдает сведения о файловых системах, содержащих заданные в командной строке файлы-аргументы.

#include <sys/statvfs.h> #include <stdio.h>

int main (int argc, char *argv[]) { struct statvfs buf; int i;

for (i = 1; i < argc; i++) { if (statvfs (argv [i], &buf)) { fprintf (stderr, "\nstatvfs: не удалось получить информацию о файловой системе, содержащей файл %s\n", argv [i]); return (-1); }

printf ("\nstatvfs-информация о файловой системе, содержащей файл %s:\n", argv [i]); printf ("Размер блока файловой системы: %ld\n", buf.f_bsize); printf ("Базовый размер блока файловой системы: %ld\n", buf.f_frsize); printf ("Общее число блоков базового размера в файловой системе: %ld\n", buf.f_blocks); printf ("Общее число свободных блоков: %ld\n", buf.f_bfree); printf ("Число свободных блоков, доступных непривилегированным процессам: %ld\n", buf.f_bavail); printf ("Общее число описателей файлов: %ld\n", buf.f_files); printf ("Общее число свободных описателей файлов: %ld\n", buf.f_ffree); printf ("Число описателей файлов, доступных непривилегированным процессам: %ld\n", buf.f_favail); printf ("Идентификатор файловой системы: %ld\n", buf.f_fsid); printf ("Битная шкала флагов: %lx\n", buf.f_flag); printf ("Максимальная длина имени файла: %ld\n", buf.f_namemax); }

return 0; }

Листинг 4.19. Пример использования функции statvfs().

Если смонтировать   файловую систему FAT на каталог   /a с опцией "только на чтение", то результат выполнения приведенной программы с аргументами / и /a может выглядеть так, как показано в пример 4.20.

statvfs-информация о файловой системе, содержащей файл /: Размер блока файловой системы: 4096 Базовый размер блока файловой системы: 4096 Общее число блоков базового размера в файловой системе: 18955608 Общее число свободных блоков: 7990010 Число свободных блоков, доступных непривилегированным процессам: 7027115 Общее число описателей файлов: 9633792 Общее число свободных описателей файлов: 8259049 Число описателей файлов, доступных непривилегированным процессам: 8259049 Идентификатор файловой системы: 0 Битная шкала флагов: 0 Максимальная длина имени файла: 255




Начало  Назад  Вперед



Книжный магазин