statfs , fstatfs , statfs64, fstatfs64或 ustat 子例程
用途
获取文件系统统计信息。
库
标准 C 库 (libc.a)
语法
#include <sys/statfs.h>
int fstatfs64 ( FileDescriptor, StatusBuffer64)
int FileDescriptor;
struct statfs64 *StatusBuffer64;
int FileDescriptor;
struct statfs64 *StatusBuffer64;
#include <sys/types.h>
#include <ustat.h>
描述
statfs 和 fstatfs 子例程返回有关包含由 Path 或 FileDescriptor 参数指定的文件的已安装文件系统的信息。 返回的信息采用 statfs 结构的格式,如 sys/statfs.h 文件中所述。
statfs64 和 fstatfs64 子例程类似于 statfs 和 fstatfs 子例程,但返回的信息的格式为 statfs64 结构 (在 sys/statfs.h 文件中描述) ,而不是 statfs 结构。
statfs64 结构为文件系统块 (或索引节点) 大小或计数以及文件系统标识提供不变的 64 位字段。 此结构允许 statfs64 和 fstatfs64 始终返回不变量 64 位大小的指定信息。
ustat 子例程还返回有关由 Device标识的已安装文件系统的信息。 此设备标识适用于任何给定文件,可通过检查 来确定st_dev在 sys/stat.h 文件中定义了 统计信息 结构的字段 。 返回的信息采用 ustat 结构的格式, 如 ustat.h 文件中所述。 ustat
子例程由 statfs 和 fstatfs 子例程取代。 请改为使用下列其中一个 (statfs 和 fstatfs) 子例程。
注: ustat 子例程不适用于 64 位大小。
参数
| 项 | 描述 |
|---|---|
| 路径 | 已安装文件系统中任何文件的路径名。 |
| FileDescriptor | 由成功的 open 或 fcntl 子例程获取的文件描述符。 文件描述符是使用的小正整数,而不是文件名。 |
| StatusBuffer | 一个指向从 statfs 或 fstatfs 子例程返回的信息的 statfs 缓冲区的指针。 |
| StatusBuffer64 | 指向从 statfs64 或 fstatfs64 子例程返回的信息的 statfs64 缓冲区的指针。 |
| 设备 | 设备的标识。 对应st_rdevstat 子例程返回的结构的字段。 stat 子例程和 sys/stat.h 文件提供有关设备驱动程序的更多信息。 |
| 缓冲区 | 一个指向 ustat 缓冲区的指针,用于保存返回的信息。 |
返回值
成功完成后,将返回值 0。 否则,返回值为-1,并设置 errno全局变量来指示错误。
错误代码
如果满足以下条件,那么 statfs, fstatfs, statfs64, fstatfs64和 ustat 子例程将失败:
| 项 | 描述 |
|---|---|
| Efault | Buffer 参数指向进程的已分配地址空间之外的位置。 |
如果以下情况成立,那么 fstatfs 或 fstatfs64 子例程将失败:
| 项 | 描述 |
|---|---|
| EBADF | FileDescriptor 参数不是有效的文件描述符。 |
| EIO | 从文件系统读取时发生 I/O 错误。 |
由于其他原因, statfs 或 statfs64 子例程可能不成功。