kazmax - Linux で自宅サーバー

statvfs - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 注意
  8. 関連項目

名前

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_bavail;   /* ルート以外の解放されているブロック数 */
    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 (2)に無視される set-user-id/set-group-ID ビット。


返された構造体の全てのメンバが全てのファイルシステムで 意味のある値であるか否かは、指定されていない。
fstatvfs ()は、ディスクリプタ fd で参照されるオープンされたファイルについて、同じ情報を返す。

返り値

成功した場合、0 が返される。 エラーの場合、-1 が返されて、 errno が適切に設定される。

エラー

EACCES
( statvfs ()の場合) path のディレクトリ部分に検索許可が与えられていない ( path_resolution (2)も参照すること)。
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
いくつかの値は、返される構造体で表現するには大きすぎる。

準拠

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

関連項目