スポンサーリンク

STATFS(2) FreeBSD システムコールマニュアル STATFS(2)

名称

statfs − ファイルシステムの統計を入手

ライブラリ

標準 C ライブラリ (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_NODEV
ファイルシステムの特殊ファイルを開けません。

MNT_SYNCHRONOUS
ファイルシステムへのすべての入出力が、同期を取って実行さ れます。

MNT_ASYNC
ファイルシステムの入出力が、同期を取って実行されません。

MNT_SOFTDEP
ソフトアップデートが動作します (ffs(7) を参照してくださ い)。

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 で参照されるオープンファイルに対し て同じ情報を戻します。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

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 (入出力) エ ラーが発生しました。

歴史

statfs() システムコールは、 4.4BSD ではじめて登場しました。

FreeBSD 10.0 November 16, 2003 FreeBSD 10.0

スポンサーリンク