Developer's Daily | Unix by Example |
main | java | perl | unix | dev directory | web log |
statfs, fstatfs ? get file system statistics |
#include <sys/vfs.h> int statfs(const char *path, struct
statfs *buf); |
statfs returns information about a mounted file system. path is the path name of any file within the mounted filesystem. buf is a pointer to a statfs structure defined as follows: |
struct statfs { long f_type; /* type of filesystem (see below) */ long f_bsize; /* optimal transfer block size */ long f_blocks; /* total data blocks in file system */ long f_bfree; /* free blocks in fs */ long f_bavail; /* free blocks avail to non-superuser */ long f_files; /* total file nodes in file system */ long f_ffree; /* free file nodes in fs */ fsid_t f_fsid; /* file system id */ long f_namelen; /* maximum length of filenames */ long f_spare[6]; /* spare for later */ }; File system types: linux/affs_fs.h: AFFS_SUPER_MAGIC 0xADFF 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 /* orig. minix */ MINIX_SUPER_MAGIC2 0x138F /* 30 char minix */ MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */ MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 char names */ 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/xia_fs.h: _XIAFS_SUPER_MAGIC 0x012FD16D |
Fields that are undefined for a particular file system are set to ?1. fstatfs returns the same information about an open file referenced by descriptor fd. |
On success, zero is returned. On error, ?1 is returned, and errno is set appropriately. |
For statfs: |
ENOTDIR |
A component of the path prefix of path is not a directory. |
ENAMETOOLONG |
path is too long. |
ENOENT |
The file referred to by path does not exist. |
||
EACCES |
Search permission is denied for a component of the path prefix of path. |
||
ELOOP |
Too many symbolic links were encountered in translating path. |
||
EFAULT |
Buf or path points to an invalid address. |
||
EIO |
An I/O error occurred while reading from or writing to the file system. |
||
ENOMEM |
Insufficient kernel memory was available. |
||
ENOSYS |
The filesystem path is on does not support statfs. |
For fstatfs: |
EBADF |
fd is not a valid open file descriptor. |
||
EFAULT |
buf points to an invalid address. |
||
EIO |
An I/O error occurred while reading from or writing to the file system. |
||
ENOSYS |
The filesystem fd is open on does not support statfs. |
4.4BSD. |
stat(2) |