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