| STATVFS(3) | Linux Programmer's Manual | STATVFS(3) | 
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;    /* ファイルシステムのブロックサイズ */
    unsigned long  f_frsize;   /* フラグメントサイズ */
    fsblkcnt_t     f_blocks;   /* ファイルシステムのサイズ (f_frsize 単位) */
    fsblkcnt_t     f_bfree;    /* 解放されているブロック数 */
    fsblkcnt_t     f_bafvail;   /* 非特権ユーザー用に解放されているブロック数 */
    fsfilcnt_t     f_files;    /* inode 数 */
    fsfilcnt_t     f_ffree;    /* 解放されている inode の数 */
    fsfilcnt_t     f_favail;   /* 非特権ユーザー用に解放されている inode の数 */
    unsigned long  f_fsid;     /* ファイルシステム ID */
    unsigned long  f_flag;     /* マウントフラグ */
    unsigned long  f_namemax;  /* ファイル名の長さの最大値 */
};
ここで、型 fsblkcnt_t と fsfilcnt_t は <sys/types.h> で定義されている。 かつて、これらは共に unsigned long であった。
フィールド f_flag は (マウントフラグの) ビットマスクである (マウントフラグについては、 mount(8) を参照すること)。 POSIX で定義されているビットは以下の通り:
返された構造体の全てのメンバが全てのファイルシステムで 意味のある値であるか否かは、指定されていない。
fstatvfs() は、ディスクリプター fd で参照されるオープンされたファイルについて、同じ情報を返す。
成功した場合、0 が返される。 失敗した場合、 -1 が返され、 errno に適切な値がセットされる。
関数 statvfs() と fstatvfs()はスレッドセーフである。
POSIX.1-2001.
Linux カーネルには、このライブラリコールをサポートするために、 statfs(2), fstatfs(2) システムコールがある。
現在の glibc の実装において、
pathconf(path, _PC_REC_XFER_ALIGN);
pathconf(path, _PC_ALLOC_SIZE_MIN);
pathconf(path, _PC_REC_MIN_XFER_SIZE);
は、それぞれ statvfs(path,buf) の返り値の f_frsize, f_frsize, f_bsize フィールドを使う。
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
| 2013-09-26 | Linux |