statvfs, fstatvfs - 获取文件系统统计信息
内容简介
#include <sys/statvfs.h>int statvfs(const char *path, struct statvfs *buf); int fstatvfs(int fd, struct statvfs *buf);
描述
The function statvfs() returns information about a mounted file system. path is the pathname of any file within the mounted filesystem. buf is a pointer to a statvfsstructure defined approximately as follows:
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 beunsigned long.
The field f_flag is a bit mask (of mount flags, see mount(8)). Bits defined by POSIX are
| 标签 | 描述 |
|---|---|
| ST_RDONLY | Read-only file system. |
| ST_NOSUID | Set-user-ID/set-group-ID bits are ignored by exec(2). |
它是不确定的返回结构的所有成员是否对所有文件系统有意义的值。
fstatvfs() 返回有关由描述符fd指定打开的文件相同的信息。
返回值
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
错误
| Error Code | 描述 |
|---|---|
| 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. |
遵循于
Solaris, Irix, POSIX.1-2001
注意
The Linux kernel has system calls statfs() and fstatfs() to support this library call.
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).
