1 .\" Copyright (C) 2003 Andries Brouwer (aeb@cwi.nl)
3 .\" %%%LICENSE_START(VERBATIM)
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date. The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein. The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
25 .\" Modified 2003-08-17 by Walter Harms
26 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
28 .\"*******************************************************************
30 .\" This file was generated with po4a. Translate the source file.
32 .\"*******************************************************************
33 .TH STATFS 2 2010\-11\-21 Linux "Linux Programmer's Manual"
35 statfs, fstatfs \- ファイルシステムの統計を取得する
37 \fB#include <sys/vfs.h> \fP/* または <sys/statfs.h> */
39 \fBint statfs(const char *\fP\fIpath\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
41 \fBint fstatfs(int \fP\fIfd\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
43 関数 \fBstatfs\fP() はマウントされたファイルシステムについての情報を返す。 \fIpath\fP
44 はマウントされたファイルシステムにあるファイルのパス名である。 \fIbuf\fP は \fIstatfs\fP
45 構造体へのポインターで、およそ以下のように定義される:
49 #if __WORDSIZE == 32 /* システムのワードサイズ */
50 # define __SWORD_TYPE int
51 #else /* __WORDSIZE == 64 */
52 # define __SWORD_TYPE long int
56 __SWORD_TYPE f_type; /* ファイルシステムの種別 (下記参照) */
57 __SWORD_TYPE f_bsize; /* 最適な転送ブロックサイズ */
58 fsblkcnt_t f_blocks; /* ファイルシステムの総データブロック数 */
59 fsblkcnt_t f_bfree; /* ファイルシステムの空きブロック数 */
60 fsblkcnt_t f_bavail; /* 非特権ユーザが利用可能な空きブロック数 */
61 fsfilcnt_t f_files; /* ファイルシステムの総ファイルノード数 */
62 fsfilcnt_t f_ffree; /* ファイルシステムの空きファイルノード数 */
63 fsid_t f_fsid; /* ファイルシステムの ID */
64 __SWORD_TYPE f_namelen; /* ファイル名の最大長 */
65 __SWORD_TYPE f_frsize; /* フラグメントサイズ (Linux 2.6 以降) */
66 __SWORD_TYPE f_spare[5];
71 ADFS_SUPER_MAGIC 0xadf5
72 AFFS_SUPER_MAGIC 0xADFF
73 BEFS_SUPER_MAGIC 0x42465331
75 CIFS_MAGIC_NUMBER 0xFF534D42
76 CODA_SUPER_MAGIC 0x73757245
77 COH_SUPER_MAGIC 0x012FF7B7
78 CRAMFS_MAGIC 0x28cd3d45
79 DEVFS_SUPER_MAGIC 0x1373
80 EFS_SUPER_MAGIC 0x00414A53
81 EXT_SUPER_MAGIC 0x137D
82 EXT2_OLD_SUPER_MAGIC 0xEF51
83 EXT2_SUPER_MAGIC 0xEF53
84 EXT3_SUPER_MAGIC 0xEF53
85 EXT4_SUPER_MAGIC 0xEF53
86 HFS_SUPER_MAGIC 0x4244
87 HPFS_SUPER_MAGIC 0xF995E849
88 HUGETLBFS_MAGIC 0x958458f6
89 ISOFS_SUPER_MAGIC 0x9660
90 JFFS2_SUPER_MAGIC 0x72b6
91 JFS_SUPER_MAGIC 0x3153464a
92 MINIX_SUPER_MAGIC 0x137F /* オリジナルの minix */
93 MINIX_SUPER_MAGIC2 0x138F /* 30 文字ファイル名の minix */
94 MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
95 MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 文字ファイル名 */
96 MSDOS_SUPER_MAGIC 0x4d44
97 NCP_SUPER_MAGIC 0x564c
98 NFS_SUPER_MAGIC 0x6969
99 NTFS_SB_MAGIC 0x5346544e
100 OPENPROM_SUPER_MAGIC 0x9fa1
101 PROC_SUPER_MAGIC 0x9fa0
102 QNX4_SUPER_MAGIC 0x002f
103 REISERFS_SUPER_MAGIC 0x52654973
105 SMB_SUPER_MAGIC 0x517B
106 SYSV2_SUPER_MAGIC 0x012FF7B6
107 SYSV4_SUPER_MAGIC 0x012FF7B5
108 TMPFS_MAGIC 0x01021994
109 UDF_SUPER_MAGIC 0x15013346
111 USBDEVICE_SUPER_MAGIC 0x9fa2
112 VXFS_SUPER_MAGIC 0xa501FCF5
113 XENIX_SUPER_MAGIC 0x012FF7B4
114 XFS_SUPER_MAGIC 0x58465342
115 _XIAFS_SUPER_MAGIC 0x012FD16D
119 \fIf_fsid\fP にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。
121 それぞれのファイルシステムにおいて未定義のフィールドには 0 が 設定される。 \fBfstatfs\fP() はディスクリプター \fIfd\fP
122 によって参照されるオープンされたファイルについて、同じ情報を返す。
124 成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
128 (\fBstatfs\fP() の場合) \fIpath\fP のディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7)
132 (\fBfstatfs\fP() の場合) \fIfd\fP は有効なオープンされたファイルディスクリプターではない。
135 \fIbuf\fP または \fIpath\fP が不正なアドレスを指している。
141 ファイルシステムからの読み込みの間に I/O エラーが発生した。
144 (\fBstatfs\fP() の場合) \fIpath\fP を解決するのに辿るべきシンボリックリンクが多すぎる。
147 (\fBstatfs\fP() の場合) \fIpath\fP が長過ぎる。
150 (\fBstatfs\fP() の場合) \fIpath\fP によって参照されるファイルが存在しない。
156 ファイルシステムがこの呼び出しをサポートしていない。
159 (\fBstatfs\fP() の場合) \fIpath\fP のディレクトリ部分がディレクトリでない。
162 いくつかの値が大き過ぎて、返り値の構造体で表現できない。
164 Linux 固有である。 Linux の \fBstatfs\fP() は 4.4BSD のものに影響を受けている。
165 (しかし同じ構造体を使用しているわけではない)
167 元々の Linux の \fBstatfs\fP() と \fBfstatfs\fP() システムコールは
168 非常に大きなファイルサイズを念頭に入れて設計されていなかった。
169 その後、Linux 2.6 で、新しい構造体 \fIstatfs64\fP を使用する
170 新しいシステムコール \fBstatfs64\fP() と \fBfstatfs64\fP() が追加された。
171 新しい構造体は元の \fIstatfs\fP 構造体と同じフィールドを持つが、
172 いろいろなフィールドのサイズが大きなファイルサイズに対応できるように
173 増やされている。 glibc の \fBstatfs\fP() と \fBfstatfs\fP() のラッパー関数は
174 カーネルによるこれらの違いを吸収している。
176 \fI<sys/vfs.h>\fP しか持たないシステムもあり、 \fI<sys/statfs.h>\fP
177 も持っているシステムもある。 前者は後者をインクルードするので、 前者をインクルードするのが良いと考えられる。
179 LSB ではライブラリコール \fBstatfs\fP(), \fBfstatfs\fP() を非推奨として、代わりに \fBstatvfs\fP(2),
180 \fBfstatvfs\fP(2) を使うように指示している。
182 Solaris, Irix, POSIX にはシステムコール \fBstatvfs\fP(2) があり、 \fIstruct statvfs\fP を返す
183 (\fI<sys/statvfs.h>\fP で定義されている)。 この構造体には、 \fIunsigned long\fP \fIf_fsid\fP
184 が含まれている。 Linux, SunOS, HP\-UX, 4.4BSD にはシステムコール \fBstatfs\fP() があり、 \fIstruct
185 statfs\fP を返す (\fI<sys/vfs.h>\fP で定義されている)。 この構造体には \fIfsid_t\fP \fIf_fsid\fP,
186 が含まれており、 \fIfsid_t\fP は \fIstruct { int val[2]; }\fP と定義されている。 FreeBSD
187 でも同じであるが、インクルードファイル \fI<sys/mount.h>\fP を使う。
189 \fIf_fsid\fP はあるランダムな値を持ち、 (\fIf_fsid\fP,\fIino\fP) という 1 組の値でファイルを一意に決定できるようにする、
190 というのが基本的な考え方である。 いくつかの OS では、デバイス番号 (の変種) を使ったり、
191 デバイス番号とファイルシステムタイプを組み合わせて使ったりしている。 OS の中には \fIf_fsid\fP
192 フィールドの取得をスーパーユーザに限定しているものもある (非特権ユーザが取得すると 0 となる)。 NFS でエクスポートされる場合、
193 このフィールドがファイルシステムのファイルハンドルで使われており、 この値を提供するとセキュリティ上の問題がある。
195 いくつかの OS では、 \fIfsid\fP を \fBsysfs\fP(2) システムコールの第 2 引き数として使用できる。
197 \fBstat\fP(2), \fBstatvfs\fP(2), \fBpath_resolution\fP(7)
199 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
200 である。プロジェクトの説明とバグ報告に関する情報は
201 http://www.kernel.org/doc/man\-pages/ に書かれている。