statvfs() - Unix,Linux系统调用
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

statvfs() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

statvfs, fstatvfs - 获取文件系统统计信息

概要

#include <sys/statvfs.h> 

int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);

描述

函数statvfs()返回有关已挂载文件系统的信息。path是已挂载文件系统中任何文件的路径名。buf是指向statvfs结构的指针,其定义大致如下:

  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 */
  };

这里,类型fsblkcnt_tfsfilcnt_t<sys/types.h>中定义。两者都曾经是unsigned long

字段f_flag是一个位掩码(挂载标志,参见mount(8))。POSIX定义的位是:

标签描述
ST_RDONLY 只读文件系统。
ST_NOSUID exec(2)忽略设置用户ID/设置组ID位。

返回的结构的所有成员在所有文件系统上是否都有有意义的值是不确定的。

fstatvfs()返回有关由描述符fd引用的打开文件相同的 信息。

返回值

成功时,返回零。发生错误时,返回-1,并相应地设置errno

错误

错误代码描述
EACCES (statvfs()) 对path路径前缀的组成部分拒绝搜索权限。(另见path_resolution(2)。)
EBADF (fstatvfs()) fd不是有效的打开文件描述符。
EFAULT Bufpath指向无效地址。
EINTR 此调用被信号中断。
EIO 从文件系统读取时发生I/O错误。
ELOOP (statvfs()) 在转换path时遇到太多符号链接。
ENAMETOOLONG (statvfs()) path太长。
ENOENT (statvfs()) path引用的文件不存在。
ENOMEM 可用内核内存不足。
ENOSYS 文件系统不支持此调用。
ENOTDIR (statvfs()) path路径前缀的组成部分不是目录。
EOVERFLOW 某些值太大,无法在返回的结构中表示。

符合标准

Solaris, Irix, POSIX.1-2001

备注

Linux内核有系统调用statfs()和fstatfs()来支持此库调用。

当前glibc的实现

   pathconf(path, _PC_REC_XFER_ALIGN);
   pathconf(path, _PC_ALLOC_SIZE_MIN);
   pathconf(path, _PC_REC_MIN_XFER_SIZE);

使用statvfs(path,buf)返回值的f_frsizef_frsizef_bsize字段。

参见



previous next Printer Friendly

广告


  

广告



广告