Scroll to navigation

STATVFS(3) Руководство программиста Linux STATVFS(3)

ИМЯ

statvfs, fstatvfs - получение информации о файловой системе

ОБЗОР

#include <sys/statvfs.h>

int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);

ОПИСАНИЕ

Функция statvfs() возвращает информацию о смонтированной файловой системе. path является путем любого файла, расположенного в смонтированной файловой системе. buf является указателем на структуру statvfs, определённую примерно следующим образом:


struct statvfs {

unsigned long f_bsize; /* размер блока файловой системы */
unsigned long f_frsize; /* размер фрагмента */
fsblkcnt_t f_blocks; /* размер ФС в единицах f_frsize */
fsblkcnt_t f_bfree; /* количество свободных блоков */
fsblkcnt_t f_bavail; /* количество свободных блоков
для непривилегированных пользователей */
fsfilcnt_t f_files; /* количество inodes */
fsfilcnt_t f_ffree; /* количество свободных inodes */
fsfilcnt_t f_favail; /* количество свободных inodes для
непривилегированных пользователей */
unsigned long f_fsid; /* идентификатор файловой системы */
unsigned long f_flag; /* параметры монтирования */
unsigned long f_namemax; /* максимальная длина имени файла */ };

Типы fsblkcnt_t и fsfilcnt_t определены в файле <sys/types.h>. Для их определения используется тип unsigned long.

Поле f_flag является битовой маской (из параметров монтирования, см. mount(8)). Биты определены, согласно POSIX, следующим образом:

Файловая система доступна только на чтение.
Биты Set-user-ID/set-group-ID игнорируются для exec(3).

Не указывается, будут ли при любых файловых системах членам возвращаемой структуры присвоены осмысленные данные.

fstatvfs() возвращает такую же информацию об открытом файле через его ссылку на дескриптор fd.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

(statvfs()) Нет права на поиск одного из компонентов префикса пути path (см. также path_resolution(7)).
(fstatvfs()) fd не является корректным открытым дескриптором файла.
Buf или path указывает на неправильный адрес.
Данный вызов был прерван сигналом.
При чтении файловой системы произошла ошибка ввода-вывода.
(statvfs()) Было обнаружено слишком много символьных ссылок при трансляции path.
(statvfs()) Слишком длинное значение аргумента path.
(statvfs()) Файл, указанный в path, не существует.
Недостаточное количество памяти ядра.
Файловая система не поддерживает данный вызов.
(statvfs()) Один из компонентов префикса пути path не является каталогом.
Некоторые значения слишком велики, чтобы быть представленными в возвращаемой структуре.

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001.

ЗАМЕЧАНИЯ

Для поддержки данной библиотечной функции в ядре Linux есть системные вызовы statfs(2) и fstatfs(2).

Текущие реализации glibc функций


pathconf(path, _PC_REC_XFER_ALIGN);
pathconf(path, _PC_ALLOC_SIZE_MIN);
pathconf(path, _PC_REC_MIN_XFER_SIZE);

используют, соответственно, поля f_frsize, f_frsize и f_bsize из возвращаемого значения statvfs(path,buf).

СМОТРИТЕ ТАКЖЕ

statfs(2)

2003-08-22 Linux