Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       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_tfsfilcnt_t<sys/types.h> で定義されている。 かつて、これらは共
       に unsigned long であった。

       フィールド f_flag  は  (マウントフラグの)  ビットマスクである  (マウントフラグについては、
       mount(8)  を参照すること)。 POSIX で定義されているビットは以下の通り:

       ST_RDONLY
              読み込み専用のファイルシステム。

       ST_NOSUID
              exec(3)  に無視される set-user-id/set-group-ID ビット。

       返された構造体の全てのメンバが全てのファイルシステムで  意味のある値であるか否かは、指定さ
       れていない。

       fstatvfs()  は、ディスクリプタ fd で参照されるオープンされたファイルについて、同じ情報を返
       す。

返り値

       成功した場合、0 が返される。 失敗した場合、 -1 が返され、 errno に適切な値がセットされる。

エラー

       EACCES (statvfs()      の場合)      path    のディレクトリ部分に検索許可が与えられていない
              (path_resolution(7) も参照すること)。

       EBADF  (fstatvfs()  の場合)  fd が有効なオープンファイルディスクリプタではない。

       EFAULT buf または path が無効なアドレスを指している。

       EINTR  この呼び出しがシグナルで中断された。

       EIO    ファイルシステムからの読み込みの間に I/O エラーが発生した。

       ELOOP  (statvfs()  の場合)  path にシンボリックリンクが多すぎる。

       ENAMETOOLONG
              (statvfs()  の場合)  path が長すぎる。

       ENOENT (statvfs()  の場合)  path で参照されるファイルが存在しない。

       ENOMEM 十分なカーネルメモリがない。

       ENOSYS ファイルシステムがこの呼び出しをサポートしていない。

       ENOTDIR
              (statvfs()  の場合)  path のディレクトリ部分がディレクトリでない。

       EOVERFLOW
              いくつかの値が大き過ぎて、返り値の構造体で表現できない。

準拠

       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 フィールドを使う。

関連項目

       statfs(2)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。