statvfs, fstatvfs - 获取文件系统统计信息
内容简介
#include <sys/statvfs.h>int statvfs(const char *path, struct statvfs *buf) int fstatvfs(int fd, struct statvfs *buf)
描述
The function%uA0statvfs() returns information about a mounted file system.%uA0path%uA0is the pathname of any file within the mounted filesystem.%uA0buf%uA0is a pointer to a%uA0statvfsstructure 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%uA0fsblkcnt_t%uA0and%uA0fsfilcnt_t%uA0are defined in%uA0<sys/types.h>. Both used to beunsigned long.
The field%uA0f_flag%uA0is a bit mask (of mount flags, see%uA0mount(8)). Bits defined by POSIX are
标签 | 描述 |
---|---|
ST_RDONLY | Read-only file system. |
ST_NOSUID | Set-user-ID/set-group-ID bits are ignored by%uA0exec(2). |
它是不确定的返回结构的所有成员是否对所有文件系统有意义的值。
fstatvfs()%uA0返回有关由描述符fd指定打开的文件相同的信息。
返回值
On success, zero is returned. On error, -1 is returned, and%uA0errno%uA0is set appropriately.
错误
Error Code | 描述 |
---|---|
EACCES | (statvfs()) Search permission is denied for a component of the path prefix of%uA0path. (See also%uA0path_resolution(2).) |
EBADF | (fstatvfs())%uA0fd%uA0is not a valid open file descriptor. |
EFAULT | Buf%uA0or%uA0path%uA0points 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%uA0path. |
ENAMETOOLONG | (statvfs())%uA0path%uA0is too long. |
ENOENT | (statvfs()) The file referred to by%uA0path%uA0does 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%uA0path%uA0is 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%uA0statfs() and%uA0fstatfs() 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%uA0f_frsize,%uA0f_frsize, and%uA0f_bsize%uA0fields of the return value of%uA0statvfs(path,buf).