statfs , fstatfs , statfs64, fstatfs64或 ustat 子例程

用途

获取文件系统统计信息。

标准 C 库 (libc.a)

语法

#include <sys/statfs.h>
int statfs ( Path,  StatusBuffer)
char *Path;
struct statfs *StatusBuffer;
int fstatfs ( FileDescriptor, StatusBuffer)
int FileDescriptor;
struct statfs *StatusBuffer;
int statfs64 ( Path,  StatusBuffer64)
char *Path;
struct statfs64 *StatusBuffer64;
int fstatfs64 ( FileDescriptor, StatusBuffer64)
int FileDescriptor;
struct statfs64 *StatusBuffer64;
#include <sys/types.h>
#include <ustat.h>
int ustat ( Device,  Buffer)
dev_t Device;
struct ustat *Buffer;

描述

statfs fstatfs 子例程返回有关包含由 PathFileDescriptor 参数指定的文件的已安装文件系统的信息。 返回的信息采用 statfs 结构的格式,如 sys/statfs.h 文件中所述。

statfs64fstatfs64 子例程类似于 statfsfstatfs 子例程,但返回的信息的格式为 statfs64 结构 (在 sys/statfs.h 文件中描述) ,而不是 statfs 结构。

statfs64 结构为文件系统块 (或索引节点) 大小或计数以及文件系统标识提供不变的 64 位字段。 此结构允许 statfs64fstatfs64 始终返回不变量 64 位大小的指定信息。

ustat 子例程还返回有关由 Device标识的已安装文件系统的信息。 此设备标识适用于任何给定文件,可通过检查 来确定st_devsys/stat.h 文件中定义了 统计信息 结构的字段 。 返回的信息采用 ustat 结构的格式,ustat.h 文件中所述。 ustat 子例程由 statfsfstatfs 子例程取代。 请改为使用下列其中一个 (statfs fstatfs) 子例程。
注: ustat 子例程不适用于 64 位大小。

参数

描述
路径 已安装文件系统中任何文件的路径名。
FileDescriptor 由成功的 open fcntl 子例程获取的文件描述符。 文件描述符是使用的小正整数,而不是文件名。
StatusBuffer 一个指向从 statfsfstatfs 子例程返回的信息的 statfs 缓冲区的指针。
StatusBuffer64 指向从 statfs64fstatfs64 子例程返回的信息的 statfs64 缓冲区的指针。
设备 设备的标识。 对应st_rdevstat 子例程返回的结构的字段。 stat 子例程和 sys/stat.h 文件提供有关设备驱动程序的更多信息。
缓冲区 一个指向 ustat 缓冲区的指针,用于保存返回的信息。

返回值

成功完成后,将返回值 0。 否则,返回值为-1,并设置 errno全局变量来指示错误。

错误代码

如果满足以下条件,那么 statfsfstatfsstatfs64fstatfs64 ustat 子例程将失败:

描述
Efault Buffer 参数指向进程的已分配地址空间之外的位置。

如果以下情况成立,那么 fstatfsfstatfs64 子例程将失败:

描述
EBADF FileDescriptor 参数不是有效的文件描述符。
EIO 从文件系统读取时发生 I/O 错误。

由于其他原因, statfsstatfs64 子例程可能不成功。