.\" Copyright (c) 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)statfs.2 8.5 (Berkeley) 5/24/95 .\" %FreeBSD: src/lib/libc/sys/statfs.2,v 1.25 2004/07/20 19:30:57 csjp Exp % .\" .\" $FreeBSD$ .Dd November 16, 2003 .Dt STATFS 2 .Os .Sh 名称 .Nm statfs .Nd ファイルシステムの統計を入手 .Sh ライブラリ .Lb libc .Sh 書式 .In sys/param.h .In sys/mount.h .Ft int .Fn statfs "const char *path" "struct statfs *buf" .Ft int .Fn fstatfs "int fd" "struct statfs *buf" .Sh 解説 .Fn statfs システムコールは、マウントされているファイルシステムの情報を戻します。 .Fa path 引数は、マウントされているファイルシステム内の任意のファイルのパス名です。 .Fa buf 引数は、以下のように定義されている .Vt statfs の構造体のポインタです: .Bd -literal 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]; /* このディレクトリにマウント */ }; .Ed .Pp 戻される可能性があるフラグは以下のとおりです: .Bl -tag -width MNT_SYNCHRONOUS .It Dv MNT_RDONLY ファイルシステムが読取り専用でマウントされています。 スーパユーザでも書込めません。 .It Dv MNT_NOEXEC そのファイルシステムからファイルを実行できません。 .It Dv MNT_NOSUID ファイルの setuid ビットと setgid ビットが、 ファイルの実行時に受け入れられません。 .It Dv MNT_NODEV ファイルシステムの特殊ファイルを開けません。 .It Dv MNT_SYNCHRONOUS ファイルシステムへのすべての入出力が、同期を取って実行されます。 .It Dv MNT_ASYNC ファイルシステムの入出力が、同期を取って実行されません。 .It Dv MNT_SOFTDEP ソフトアップデートが動作します .Xr ( ffs 7 を参照してください)。 .It Dv MNT_SUIDDIR ディレクトリの SUID ビットを特別に取り扱います。 .It Dv MNT_UNION 下層のファイルシステムとのユニオン。 .It Dv MNT_NOSYMFOLLOW シンボリックリンクを辿りません。 .It Dv MNT_NOCLUSTERR 読み取りクラスタリングが無効になっています。 .It Dv MNT_NOCLUSTERW 書き込みクラスタリングが無効になっています。 .\".It Dv MNT_JAILDEVFS .\"XXX .It Dv MNT_MULTILABEL 各オブジェクトに対する Mandatory Access Control (MAC) サポート .Xr ( mac 4 を参照してください)。 .It Dv MNT_ACLS Access Control List (ACL) サポートが有効になっています。 .It Dv MNT_LOCAL ファイルシステムがローカルに常駐しています。 .It Dv MNT_QUOTA ファイルシステムでクォータが有効になっています。 .It Dv MNT_ROOTFS ルートファイルシステムを確認します。 .It Dv MNT_EXRDONLY ファイルシステムが、読取り専用でエクスポートされます。 .It Dv MNT_NOATIME ファイルアクセス時刻の更新が無効になっています。 .It Dv MNT_USER ファイルシステムがユーザによってマウントされています。 .\".It Dv MNT_IGNORE .\"XXX .It Dv MNT_EXPORTED ファイルシステムが、読み書きの両方でエクスポートされます。 .It Dv MNT_DEFEXPORTED ファイルシステムが、読み書きの両方で 任意のインターネットホストにエクスポートされます。 .It Dv MNT_EXPORTANON ファイルシステムが、すべてのリモートアクセスを匿名ユーザにマップします。 .It Dv MNT_EXKERB ファイルシステムが、Kerberos uid マッピングでエクスポートされます。 .It Dv MNT_EXPUBLIC ファイルシステムが、一般公開されています (WebNFS)。 .El .Pp 特定のファイルシステムで定義されていないフィールドは、-1 に設定されます。 .Fn fstatfs システムコールは、記述子 .Fa fd で参照されるオープンファイルに対して同じ情報を戻します。 .Sh 戻り値 .Rv -std .Sh エラー .Fn statfs システムコールは、以下のうちの 1 つ以上が真である場合にエラーとなります: .Bl -tag -width Er .It Bq Er ENOTDIR .Fa path のパスの構成要素中にディレクトリ以外のものが含まれています。 .It Bq Er ENAMETOOLONG .Fa path の構成要素が 255 文字を越えているか、または .Fa path 全体が 1023 文字を越えています。 .It Bq Er ENOENT .Fa path の参照するファイルが存在しません。 .It Bq Er EACCES .Fa path には、検索が許可されていないディレクトリが含まれています。 .It Bq Er ELOOP .Fa path を変換するときに検出されたシンボリックリンクが多すぎます。 .It Bq Er EFAULT .Fa buf 引数または .Fa path 引数が、不正なアドレスを指しています。 .It Bq Er EIO ファイルシステムに読み書きしている間に .Tn 入出力 エラーが発生しました。 .El .Pp .Fn fstatfs システムコールは、以下のうち 1 つ以上が真である場合にエラーとなります: .Bl -tag -width Er .It Bq Er EBADF .Fa fd 引数が有効オープンファイル記述子ではありません。 .It Bq Er EFAULT .Fa buf 引数が不正なアドレスを指しています。 .It Bq Er EIO ファイルシステムに読み書きしている間に .Tn I/O (入出力) エラーが発生しました。 .El .Sh 歴史 .Fn statfs システムコールは、 .Bx 4.4 ではじめて登場しました。