.\" 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.9.2.7 2001/12/14 18:34:01 ru Exp % .\" .\" $FreeBSD$ .Dd May 24, 1995 .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 は、以下のように定義 されている .Fn statfs の構造体のポインタです。 .Bd -literal typedef struct fsid { int32_t val[2]; } fsid_t; /* ファイルシステム ID 型 */ /* * ファイルシステム統計 */ #define MFSNAMELEN 16 /* ヌルを含むファイルシステム名の長さ */ #define MNAMELEN 90 /* 戻り値の用のバッファの長さ */ struct statfs { long f_bsize; /* ファイルシステムのブロックサイズ */ long f_iosize; /* 最適なトランスファーブロックサイズ */ long f_blocks; /* ファイルシステム上の合計ブロックサイズ */ long f_bfree; /* ファイルシステム上の利用可能なブロック */ long f_bavail; /* スーパユーザ以外が利用可能なブロック */ long f_files; /* ファイルシステム上の合計ノード数 */ long f_ffree; /* ファイルシステム上の利用可能なノード数 */ fsid_t f_fsid; /* ファイルシステム ID 番号 */ uid_t f_owner; /* ファイルシステムをマウントしたユーザ */ int f_type; /* ファイルシステムのタイプ */ int f_flags; /* マウントフラッグのコピー */ long f_syncwrites; /* マウントしてからの同期書き込み数 */ long f_asyncwrites; /* マウントしてからの非同期書き込み数 */ char f_fstypename[MFSNAMELEN];/* ファイルシステムタイプ名 */ char f_mntonname[MNAMELEN]; /* マウントポイント */ long f_syncreads; /* マウント以降の同期読み取り数 */ long f_asyncreads; /* マウント以降の非同期読み取り数 */ char f_mntfromname[MNAMELEN]; /* マウントされたファイルシステム */ }; .Ed 戻される可能性があるフラグは以下のとおりです。 .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_LOCAL ファイルシステムがローカルに常駐しています。 .It Dv MNT_QUOTA ファイルシステムでクォータが有効になっています。 .It Dv MNT_ROOTFS ルートファイルシステムを確認します。 .It Dv MNT_EXRDONLY ファイルシステムが、読取り専用でエクスポートされます。 .It Dv MNT_EXPORTED ファイルシステムが、読み書きの両方でエクスポートされます。 .It Dv MNT_DEFEXPORTED ファイルシステムが、読み書きの両方で 任意のインターネットホストにエクスポートされます。 .It Dv MNT_EXPORTANON ファイルシステムが、すべてのリモートアクセスを 匿名ユーザにマップします。 .It Dv MNT_EXKERB ファイルシステムが、Kerberos uid マッピングでエクスポートされます。 .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 ファイルシステムに読み書きしている間に入出力エラーが発生しました。 .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 ではじめて登場しました。