STATFS(2) | FreeBSD System Calls Manual | STATFS(2) |
名称
statfs — ファイルシステムの統計を入手ライブラリ
Standard C Library (libc, -lc)書式
#include < sys/param.h>#include < sys/mount.h>
int
statfs( const char *path, struct statfs *buf);
int
fstatfs( int fd, struct statfs *buf);
解説
statfs() システムコールは、マウントされているファイルシステムの情報を戻します。 path 引数は、マウントされているファイルシステム内の任意のファイルのパス名です。 buf 引数は、以下のように定義されている statfs の構造体のポインタです:
typedef struct fsid { int32_t val[2]; } fsid_t; /* ファイルシステム ID タイプ */ /* * ファイルシステム統計 */ #define MFSNAMELEN 16 /* ヌルを含むタイプ名の長さ */ #define MNAMELEN 90 /* 戻り値の用のバッファの長さ */ #define STATFS_VERSION 0x20030518 /* 現在のバージョン番号 */ struct statfs { uint32_t f_version; /* 構造体のバージョン番号 */ uint32_t f_type; /* ファイルシステムのタイプ */ uint64_t f_flags; /* エクスポーされたマウントフラグのコピー */ uint64_t f_bsize; /* ファイルシステムの断片サイズ */ uint64_t f_iosize; /* 最適な転送ブロックサイズ */ uint64_t f_blocks; /* ファイルシステム上の合計データブロック */ uint64_t f_bfree; /* ファイルシステム上のフリーブロック */ int64_t f_bavail; /* スーパユーザ以外が利用可能なブロック */ uint64_t f_files; /* ファイルシステム上の合計ノード数 */ int64_t f_ffree; /* スーパユーザ以外が利用可能なノード数 */ uint64_t f_syncwrites; /* マウントしてからの同期書み込み数 */ uint64_t f_asyncwrites; /* マウントしてからの非同期書み込み数 */ uint64_t f_syncreads; /* マウントしてからの同期読み込み数 */ uint64_t f_asyncreads; /* マウントしてからの非同期読み込み数 */ uint64_t f_spare[10]; /* 未使用領域 */ uint32_t f_namemax; /* ファイル名の長さの最大 */ uid_t f_owner; /* ファイルシステムをマウントしたユーザ */ fsid_t f_fsid; /* ファイルシステム ID */ char f_charspare[80]; /* 後のための余白 */ char f_fstypename[MFSNAMELEN]; /* ファイルシステムのタイプ名 */ char f_mntfromname[MNAMELEN]; /* マウントされたファイルシステム */ char f_mntonname[MNAMELEN]; /* このディレクトリにマウント */ };
戻される可能性があるフラグは以下のとおりです:
- MNT_RDONLY
- ファイルシステムが読み込み専用でマウントされています。スーパユーザでも書き込めません。
- MNT_NOEXEC
- そのファイルシステムからファイルを実行できません。
- MNT_NOSUID
- ファイルの setuid ビットと setgid ビットが、ファイルの実行時に受け入れられません。
- MNT_SYNCHRONOUS
- ファイルシステムへのすべての入出力が、同期を取って実行されます。
- MNT_ASYNC
- ファイルシステムの入出力が、同期を取って実行されません。
- MNT_SOFTDEP
- ソフトアップデートが動作します ( ffs(7) を参照してください)。
- MNT_GJOURNAL
- gjournal でのジャーナル処理は、有効にされます ( gjournal(8) 参照)。
- MNT_SUIDDIR
- ディレクトリの SUID ビットを特別に取り扱います。
- MNT_UNION
- 下層のファイルシステムとのユニオン。
- MNT_NOSYMFOLLOW
- シンボリックリンクを辿りません。
- MNT_NOCLUSTERR
- 読み込みクラスタリングが無効になっています。
- MNT_NOCLUSTERW
- 書き込みクラスタリングが無効になっています。
- MNT_MULTILABEL
- 各オブジェクトに対する Mandatory Access Control (MAC) サポート ( mac(4) を参照してください)。
- MNT_ACLS
- Access Control List (ACL) サポートが有効になっています。
- MNT_LOCAL
- ファイルシステムがローカルに常駐しています。
- MNT_QUOTA
- ファイルシステムでクォータが有効になっています。
- MNT_ROOTFS
- ルートファイルシステムを確認します。
- MNT_EXRDONLY
- ファイルシステムが、読み込み専用でエクスポートされます。
- MNT_NOATIME
- ファイルアクセス時刻の更新が無効になっています。
- MNT_USER
- ファイルシステムがユーザによってマウントされています。
- MNT_EXPORTED
- ファイルシステムが、読み書きの両方でエクスポートされます。
- MNT_DEFEXPORTED
- ファイルシステムが、読み書きの両方で任意のインターネットホストにエクスポートされます。
- MNT_EXPORTANON
- ファイルシステムが、すべてのリモートアクセスを匿名ユーザにマップします。
- MNT_EXKERB
- ファイルシステムが、Kerberos uid マッピングでエクスポートされます。
- MNT_EXPUBLIC
- ファイルシステムが、一般公開されています (WebNFS)。
特定のファイルシステムで定義されていないフィールドは、-1 に設定されます。 fstatfs() システムコールは、記述子 fd で参照されるオープンファイルに対して同じ情報を戻します。
戻り値
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.エラー
statfs() システムコールは、以下のうちの 1 つ以上が真である場合にエラーとなります:- [ ENOTDIR]
- path のパスの構成要素中にディレクトリ以外のものが含まれています。
- [ ENAMETOOLONG]
- path の構成要素が 255 文字を越えているか、または path 全体が 1023 文字を越えています。
- [ ENOENT]
- path の参照するファイルが存在しません。
- [ EACCES]
- path には、検索が許可されていないディレクトリが含まれています。
- [ ELOOP]
- path を変換するときに検出されたシンボリックリンクが多すぎます。
- [ EFAULT]
- buf 引数または path 引数が、不正なアドレスを指しています。
- [ EIO]
- ファイルシステムに読み書きしている間に入出力エラーが発生しました。
fstatfs() システムコールは、以下のうち 1 つ以上が真である場合にエラーとなります:
- [ EBADF]
- fd 引数が有効オープンファイル記述子ではありません。
- [ EFAULT]
- buf 引数が不正なアドレスを指しています。
- [ EIO]
- ファイルシステムに読み書きしている間に I/O (入出力) エラーが発生しました。
関連項目
fhstatfs(2)歴史
statfs() システムコールは、 4.4BSD ではじめて登場しました。November 1, 2006 | FreeBSD |