Документация по LinuxLinuxDoc.Ru 🔍

statfs, fstatfs - получают статистические данные о файловой системе

НАЗВАНИЕ
statfs, fstatfs - получают статистические данные о
файловой системе

СИНТАКСИС
#include

int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);

ОПИСАНИЕ
statfs возвращает информацию о запущенной файловой
системе. path - путь к любому файлу, который находится в
запущенной файловой системе. buf - указатель на структуру
statfs, состоящую из следующих элементов:
struct statfs {
long f_type; /* тип файловой системы (см. ниже) */
long f_bsize; /* оптимальный размер блока данных */
long f_blocks; /* общее количество блоков данных в файловой системе */
long f_bfree; /* количество свободных блоков */
long f_bavail; /* количество свободных блоков, доступных несуперпользователю */
long f_files; /* общее количество inode файловой системы */
long f_ffree; /* количество свободных inode файловой системы */
fsid_t f_fsid; /* идентификатор файловой системы */
long f_namelen; /* максимальная длина имени файла */
long f_spare[6]; /* свободные поля, предназначенные для использования в будущем */
};
Типы файловых систем:
linux/affs_fs.h:
AFFS_SUPER_MAGIC 0xADFF
linux/efs_fs.h:
EFS_SUPER_MAGIC 0x00414A53
linux/ext_fs.h:
EXT_SUPER_MAGIC 0x137D
linux/ext2_fs.h:
EXT2_OLD_SUPER_MAGIC 0xEF51
EXT2_SUPER_MAGIC 0xEF53
linux/hpfs_fs.h:
HPFS_SUPER_MAGIC 0xF995E849
linux/iso_fs.h:
ISOFS_SUPER_MAGIC 0x9660
linux/minix_fs.h:
MINIX_SUPER_MAGIC 0x137F /* стандартный minix */
MINIX_SUPER_MAGIC2 0x138F /* 30-символьный minix */
MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30-символьные имена */
linux/msdos_fs.h:
MSDOS_SUPER_MAGIC 0x4d44
linux/ncp_fs.h:
NCP_SUPER_MAGIC 0x564c
linux/nfs_fs.h:
NFS_SUPER_MAGIC 0x6969
linux/proc_fs.h:
PROC_SUPER_MAGIC 0x9fa0
linux/smb_fs.h:
SMB_SUPER_MAGIC 0x517B
linux/sysv_fs.h:
XENIX_SUPER_MAGIC 0x012FF7B4
SYSV4_SUPER_MAGIC 0x012FF7B5
SYSV2_SUPER_MAGIC 0x012FF7B6
COH_SUPER_MAGIC 0x012FF7B7
linux/ufs_fs.h:
UFS_MAGIC 0x00011954
linux/xfs_fs.h:
XFS_SUPER_MAGIC 0x58465342
linux/xia_fs.h:
_XIAFS_SUPER_MAGIC 0x012FD16D

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном завершении возвращается 0. При ошибке
возвращается -1, а переменной errno присваивается номер
ошибки.

КОДЫ ОШИБОК
Коды ошибок statfs:

ENOTDIR
Часть префикса пути path не является каталогом.

ENAMETOOLONG
Слишком длинный параметр path.

ENOENT Файла path не существует.

EACCES Отсутствуют права на поиск в части префикса пути
path.

ELOOP Слишком большое количество символьных ссылок в
имени path.

EFAULT Buf или path указывают на неправильный адрес.

EIO Ошибка ввода/вывода при чтении информации или
записи ее в файловую систему.

ENOMEM Недостаточно памяти в ядре.

ENOSYS Файловая система path не поддерживает statfs.

Коды ошибок fstatfs:

EBADF fd не является корректным файловым описателем.

EFAULT buf указывает на неправильный адрес.

EIO Ошибка ввода/вывода при чтении информации или
записи ее в файловую систему.

ENOSYS Файловая система, на которой открыт файл fd, не
поддерживает statfs.

СООТВЕТСТВИЕ СТАНДАРТАМ
Функция statfs в Linux была создана на основе аналогичной
функции в 4.4BSD (но структура их данных различаются).
Читать новости Linux в Telegram
Linux - statfs, fstatfs - получают статистические данные о файловой системе
Мы в соцсетях ✉