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-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |