int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
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
Никто не знает, что должно содержаться в f_fsid (но смотри далее).
Устанавливаемые значения полей, не определенные в некоторых системах, равны нулю. fstatfs возвращает ту же информацию об открытом файле, заданном описателем fd.
Коды ошибок fstatfs:
Общая идея заключается в том, что содержание f_fsid случайно, например - уникальные пары (f_fsid,ino) однозначно обозначающие файл. Некоторые ОС используют (как вариант) номер устройства, или номер устройства в комбинации с типом файловой системы. Некоторые ОС ограничивают выдачу поля f_fsid только для суперпользователя (и ноль для непривилегированных пользователей), так-как это поле используется в обработке файла на файловой системе при экспорте NFS, и разрешение на его выдачу затрагивает проблемы безопасности.
В некоторых ОС fsid может использоваться, как второй параметр к системному вызову sysfs().
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |