Linux repositories inspector
Linux
2017-09-15
Aliases: fstatvfs(2), fstatvfs(2), fstatvfs(2), fstatvfs(2), fstatvfs(2), fstatvfs(2), statvfs(2), statvfs(2), statvfs(2), statvfs(2), statvfs(2), statvfs(2), fstatvfs(3), fstatvfs(3), fstatvfs(3), fstatvfs(3), fstatvfs(3), fstatvfs(3)

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

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 — битовая маска различных параметров, которые были указаны при монтировании этой файловой системы. В нём содержится ноль или несколько следующих флагов:
ST_MANDLOCK
Разрешена обязательная (mandatory) блокировка файловой системы (смотрите fcntl(2)).
ST_NOATIME
Не обновлять времена доступа; смотрите mount(2).
ST_NODEV
Запретить доступ к специальным файлам устройств в этой файловой системе.
ST_NODIRATIME
Не обновлять времена доступа к каталогам; смотрите mount(2).
ST_NOEXEC
Исполнение программ в этой файловой системе запрещено.
ST_NOSUID
Биты set-user-ID и set-group-ID игнорируются в exec(3) для исполняемых файлов в этой файловой системе.
ST_RDONLY
Файловая система смонтирована в режиме только для чтения.
ST_RELATIME
Обновлять atime относительно mtime/ctime; смотрите mount(2).
ST_SYNCHRONOUS
Выполнять синхронную запись в файловую систему немедленно (смотрите описание O_SYNC в open(2)).
Не указывается, будут ли при любых файловых системах членам возвращаемой структуры присвоены осмысленные данные.
fstatvfs() возвращает такую же информацию об открытом файле через его ссылку на дескриптор fd.

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

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

ОШИБКИ

EACCES (statvfs()) Нет права на поиск одного из компонентов префикса пути path (см. также path_resolution(7)).
EBADF (fstatvfs()) fd не является корректным открытым дескриптором файла.
EFAULT Buf или path указывает на неправильный адрес.
EINTR Данный вызов был прерван сигналом; смотрите signal(7).
EIO При чтении файловой системы произошла ошибка ввода-вывода.
ELOOP (statvfs()) Было обнаружено слишком много символьных ссылок при трансляции path.
ENAMETOOLONG
(statvfs()) Слишком длинное значение аргумента path.
ENOENT (statvfs()) Файл, указанный в path, не существует.
ENOMEM Недостаточное количество памяти ядра.
ENOSYS Файловая система не поддерживает данный вызов.
ENOTDIR
(statvfs()) Один из компонентов префикса пути path не является каталогом.
EOVERFLOW
Некоторые значения слишком велики, чтобы быть представленными в возвращаемой структуре.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
Интерфейс Атрибут Значение
statvfs(), fstatvfs() Безвредность в нитях MT-Safe

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

POSIX.1-2001, POSIX.1-2008.
В POSIX.1 в поле f_flag определены только флаги ST_NOSUID и ST_RDONLY. Чтобы получить определения остальных флагов нужно определить _GNU_SOURCE.

ЗАМЕЧАНИЯ

Для поддержки данной библиотечной функции в ядре Linux есть системные вызовы statfs(2) и fstatfs(2).
В версиях glibc до 2.13, statvfs() заполняла биты поля f_flag сканируя параметры монтирования в /proc/mounts. Однако начиная с Linux 2.6.36, нижележащий системный вызов statfs(2) предоставляет необходимую информацию через поле f_flags, и начиная с glibc версии 2.13, функция statvfs() будет использовать информацию из этого поля, а не сканируя /proc/mounts.
Реализации функций в 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.

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

⇧ Top