Copyright © tutorialspoint.com
int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);
struct statvfs { unsigned long f_bsize; /* file system block size */ unsigned long f_frsize; /* fragment size */ fsblkcnt_t f_blocks; /* size of fs in f_frsize units */ fsblkcnt_t f_bfree; /* # free blocks */ fsblkcnt_t f_bavail; /* # free blocks for non-root */ fsfilcnt_t f_files; /* # inodes */ fsfilcnt_t f_ffree; /* # free inodes */ fsfilcnt_t f_favail; /* # free inodes for non-root */ unsigned long f_fsid; /* file system ID */ unsigned long f_flag; /* mount flags */ unsigned long f_namemax; /* maximum filename length */ }; |
Here the types fsblkcnt_t and fsfilcnt_t are defined in <sys/types.h>. Both used to be unsigned long.
The field f_flag is a bit mask (of mount flags, see mount(8)). Bits defined by POSIX are
Tag | Description |
---|---|
ST_RDONLY | |
Read-only file system. | |
ST_NOSUID | |
Set-user-ID/set-group-ID bits are ignored by exec(2). |
It is unspecified whether all members of the returned struct have meaningful values on all filesystems.
fstatvfs() returns the same information about an open file referenced by descriptor fd.
Tag | Description |
---|---|
EACCES | (statvfs()) Search permission is denied for a component of the path prefix of path. (See also path_resolution(2).) |
EBADF | (fstatvfs()) fd is not a valid open file descriptor. |
EFAULT | Buf or path points to an invalid address. |
EINTR | This call was interrupted by a signal. |
EIO | An I/O error occurred while reading from the file system. |
ELOOP | (statvfs()) Too many symbolic links were encountered in translating path. |
ENAMETOOLONG | |
(statvfs()) path is too long. | |
ENOENT | (statvfs()) The file referred to by path does not exist. |
ENOMEM | Insufficient kernel memory was available. |
ENOSYS | The file system does not support this call. |
ENOTDIR | |
(statvfs()) A component of the path prefix of path is not a directory. | |
EOVERFLOW | |
Some values were too large to be represented in the returned struct. |
The current glibc implementation of
pathconf(path, _PC_REC_XFER_ALIGN); pathconf(path, _PC_ALLOC_SIZE_MIN); pathconf(path, _PC_REC_MIN_XFER_SIZE); |
uses the f_frsize, f_frsize, and f_bsize fields of the return value of statvfs(path,buf).
Copyright © tutorialspoint.com