OSDN Git Service

Update release pages
[linuxjm/LDP_man-pages.git] / release / man2 / statfs.2
1 .\" Copyright (C) 2003 Andries Brouwer (aeb@cwi.nl)
2 .\"
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.
7 .\"
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.
12 .\"
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
19 .\" professionally.
20 .\"
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
23 .\" %%%LICENSE_END
24 .\"
25 .\" Modified 2003-08-17 by Walter Harms
26 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
27 .\"
28 .\"*******************************************************************
29 .\"
30 .\" This file was generated with po4a. Translate the source file.
31 .\"
32 .\"*******************************************************************
33 .\"
34 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
35 .\"         all rights reserved.
36 .\" Translated Fri Dec 12 00:25:54 JST 1997
37 .\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
38 .\" Updated & Modified Sat Jun  2 20:25:46 JST 2001
39 .\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
40 .\" Updated & Modified Sat Jan 18 16:48:08 JST 2003
41 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
42 .\" Updated & Modified Sun Sep  7 00:52:44 JST 2003 by Yuichi SATO
43 .\" Updated & Modified Sun Jan  9 22:35:28 JST 2005 by Yuichi SATO
44 .\" Updated 2006-07-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
45 .\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
46 .\"
47 .TH STATFS 2 2014\-06\-13 Linux "Linux Programmer's Manual"
48 .SH 名前
49 statfs, fstatfs \- ファイルシステムの統計を取得する
50 .SH 書式
51 \fB#include <sys/vfs.h> \fP/* または <sys/statfs.h> */
52 .sp
53 \fBint statfs(const char *\fP\fIpath\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
54 .br
55 \fBint fstatfs(int \fP\fIfd\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
56 .SH 説明
57 関数 \fBstatfs\fP()  はマウントされたファイルシステムについての情報を返す。 \fIpath\fP
58 はマウントされたファイルシステムにあるファイルのパス名である。 \fIbuf\fP は \fIstatfs\fP
59 構造体へのポインターで、およそ以下のように定義される:
60
61 .in +4n
62 .nf
63 #if __WORDSIZE == 32            /* システムのワードサイズ */
64 # define __SWORD_TYPE           int
65 #else /* __WORDSIZE == 64 */
66 # define __SWORD_TYPE           long int
67 #endif
68
69 struct statfs {
70     __SWORD_TYPE f_type;    /* ファイルシステムの種別 (下記参照) */
71     __SWORD_TYPE f_bsize;   /* 最適な転送ブロックサイズ */
72     fsblkcnt_t   f_blocks;  /* ファイルシステムの総データブロック数 */
73     fsblkcnt_t   f_bfree;   /* ファイルシステムの空きブロック数 */
74     fsblkcnt_t   f_bavail;  /* 非特権ユーザが利用可能な空きブロック数 */
75     fsfilcnt_t   f_files;   /* ファイルシステムの総ファイルノード数 */
76     fsfilcnt_t   f_ffree;   /* ファイルシステムの空きファイルノード数 */
77     fsid_t       f_fsid;    /* ファイルシステムの ID */
78     __SWORD_TYPE f_namelen; /* ファイル名の最大長 */
79     __SWORD_TYPE f_frsize;  /* フラグメントサイズ (Linux 2.6 以降) */
80     __SWORD_TYPE f_spare[5];
81 };
82
83 ファイルシステムの型:
84
85    ADFS_SUPER_MAGIC      0xadf5
86    AFFS_SUPER_MAGIC      0xADFF
87    BDEVFS_MAGIC          0x62646576
88    BEFS_SUPER_MAGIC      0x42465331
89    BFS_MAGIC             0x1BADFACE
90    BINFMTFS_MAGIC        0x42494e4d
91    BTRFS_SUPER_MAGIC     0x9123683E
92    CGROUP_SUPER_MAGIC    0x27e0eb
93    CIFS_MAGIC_NUMBER     0xFF534D42
94    CODA_SUPER_MAGIC      0x73757245
95    COH_SUPER_MAGIC       0x012FF7B7
96    CRAMFS_MAGIC          0x28cd3d45
97    DEBUGFS_MAGIC         0x64626720
98    DEVFS_SUPER_MAGIC     0x1373
99    DEVPTS_SUPER_MAGIC    0x1cd1
100    EFIVARFS_MAGIC        0xde5e81e4
101    EFS_SUPER_MAGIC       0x00414A53
102    EXT_SUPER_MAGIC       0x137D
103    EXT2_OLD_SUPER_MAGIC  0xEF51
104    EXT2_SUPER_MAGIC      0xEF53
105    EXT3_SUPER_MAGIC      0xEF53
106    EXT4_SUPER_MAGIC      0xEF53
107    FUSE_SUPER_MAGIC      0x65735546
108    FUTEXFS_SUPER_MAGIC   0xBAD1DEA
109    HFS_SUPER_MAGIC       0x4244
110    HOSTFS_SUPER_MAGIC    0x00c0ffee
111    HPFS_SUPER_MAGIC      0xF995E849
112    HUGETLBFS_MAGIC       0x958458f6
113    ISOFS_SUPER_MAGIC     0x9660
114    JFFS2_SUPER_MAGIC     0x72b6
115    JFS_SUPER_MAGIC       0x3153464a
116    MINIX_SUPER_MAGIC     0x137F /* オリジナルの minix */
117    MINIX_SUPER_MAGIC2    0x138F /* 30 文字ファイル名の minix */
118    MINIX2_SUPER_MAGIC    0x2468 /* minix V2 */
119    MINIX2_SUPER_MAGIC2   0x2478 /* minix V2, 30 文字ファイル名 */
120    MINIX3_SUPER_MAGIC    0x4d5a /* minix V3 ファイルシステム, 60 文字ファイル名 */
121    MQUEUE_MAGIC          0x19800202
122    MSDOS_SUPER_MAGIC     0x4d44
123    NCP_SUPER_MAGIC       0x564c
124    NFS_SUPER_MAGIC       0x6969
125    NILFS_SUPER_MAGIC     0x3434
126    NTFS_SB_MAGIC         0x5346544e
127    OPENPROM_SUPER_MAGIC  0x9fa1
128    PIPEFS_MAGIC          0x50495045
129    PROC_SUPER_MAGIC      0x9fa0
130    PSTOREFS_MAGIC        0x6165676C
131    QNX4_SUPER_MAGIC      0x002f
132    QNX6_SUPER_MAGIC      0x68191122
133    RAMFS_MAGIC           0x858458f6
134    REISERFS_SUPER_MAGIC  0x52654973
135    ROMFS_MAGIC           0x7275
136    SELINUX_MAGIC         0xf97cff8c
137    SMACK_MAGIC           0x43415d53
138    SMB_SUPER_MAGIC       0x517B
139    SOCKFS_MAGIC          0x534F434B
140    SQUASHFS_MAGIC        0x73717368
141    SYSFS_MAGIC           0x62656572
142    SYSV2_SUPER_MAGIC     0x012FF7B6
143    SYSV4_SUPER_MAGIC     0x012FF7B5
144    TMPFS_MAGIC           0x01021994
145    UDF_SUPER_MAGIC       0x15013346
146    UFS_MAGIC             0x00011954
147    USBDEVICE_SUPER_MAGIC 0x9fa2
148    V9FS_MAGIC            0x01021997
149    VXFS_SUPER_MAGIC      0xa501FCF5
150    XENFS_SUPER_MAGIC     0xabba1974
151    XENIX_SUPER_MAGIC     0x012FF7B4
152    XFS_SUPER_MAGIC       0x58465342
153    _XIAFS_SUPER_MAGIC    0x012FD16D
154 .fi
155 .in
156 .PP
157 これらの MAGIC 定数のほとんどは \fI/usr/include/linux/magic.h\fP
158 で定義されており、いくつかはカーネルソースで直接書かれている。
159 .PP
160 \fIf_fsid\fP にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。
161 .PP
162 それぞれのファイルシステムにおいて未定義のフィールドには 0 が 設定される。 \fBfstatfs\fP()  はディスクリプター \fIfd\fP
163 によって参照されるオープンされたファイルについて、同じ情報を返す。
164 .SH 返り値
165 成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
166 .SH エラー
167 .TP 
168 \fBEACCES\fP
169 (\fBstatfs\fP()  の場合)  \fIpath\fP のディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7)
170 も参照すること)。
171 .TP 
172 \fBEBADF\fP
173 (\fBfstatfs\fP()  の場合)  \fIfd\fP は有効なオープンされたファイルディスクリプターではない。
174 .TP 
175 \fBEFAULT\fP
176 \fIbuf\fP または \fIpath\fP が不正なアドレスを指している。
177 .TP 
178 \fBEINTR\fP
179 この呼び出しがシグナルで中断された。
180 .TP 
181 \fBEIO\fP
182 ファイルシステムからの読み込みの間に I/O エラーが発生した。
183 .TP 
184 \fBELOOP\fP
185 (\fBstatfs\fP()  の場合)  \fIpath\fP を解決するのに辿るべきシンボリックリンクが多すぎる。
186 .TP 
187 \fBENAMETOOLONG\fP
188 (\fBstatfs\fP()  の場合)  \fIpath\fP が長過ぎる。
189 .TP 
190 \fBENOENT\fP
191 (\fBstatfs\fP()  の場合)  \fIpath\fP によって参照されるファイルが存在しない。
192 .TP 
193 \fBENOMEM\fP
194 十分なカーネルメモリがない。
195 .TP 
196 \fBENOSYS\fP
197 ファイルシステムがこの呼び出しをサポートしていない。
198 .TP 
199 \fBENOTDIR\fP
200 (\fBstatfs\fP()  の場合)  \fIpath\fP のディレクトリ部分がディレクトリでない。
201 .TP 
202 \fBEOVERFLOW\fP
203 いくつかの値が大き過ぎて、返り値の構造体で表現できない。
204 .SH 準拠
205 Linux 固有である。 Linux の \fBstatfs\fP()  は 4.4BSD のものに影響を受けている。
206 (しかし同じ構造体を使用しているわけではない)
207 .SH 注意
208 元々の Linux の \fBstatfs\fP() と \fBfstatfs\fP() システムコールは
209 非常に大きなファイルサイズを念頭に入れて設計されていなかった。
210 その後、Linux 2.6 で、新しい構造体 \fIstatfs64\fP を使用する
211 新しいシステムコール \fBstatfs64\fP() と \fBfstatfs64\fP() が追加された。
212 新しい構造体は元の \fIstatfs\fP 構造体と同じフィールドを持つが、
213 いろいろなフィールドのサイズが大きなファイルサイズに対応できるように
214 増やされている。 glibc の \fBstatfs\fP() と \fBfstatfs\fP() のラッパー関数は
215 カーネルによるこれらの違いを吸収している。
216
217 \fI<sys/vfs.h>\fP しか持たないシステムもあり、 \fI<sys/statfs.h>\fP
218 も持っているシステムもある。 前者は後者をインクルードするので、 前者をインクルードするのが良いと考えられる。
219
220 LSB ではライブラリコール \fBstatfs\fP(), \fBfstatfs\fP()  を非推奨として、代わりに \fBstatvfs\fP(2),
221 \fBfstatvfs\fP(2)  を使うように指示している。
222 .SS "f_fsid フィールド"
223 Solaris, Irix, POSIX にはシステムコール \fBstatvfs\fP(2)  があり、 \fIstruct statvfs\fP を返す
224 (\fI<sys/statvfs.h>\fP で定義されている)。 この構造体には、 \fIunsigned long\fP \fIf_fsid\fP
225 が含まれている。 Linux, SunOS, HP\-UX, 4.4BSD にはシステムコール \fBstatfs\fP()  があり、 \fIstruct
226 statfs\fP を返す (\fI<sys/vfs.h>\fP で定義されている)。 この構造体には \fIfsid_t\fP \fIf_fsid\fP,
227 が含まれており、 \fIfsid_t\fP は \fIstruct { int val[2]; }\fP と定義されている。 FreeBSD
228 でも同じであるが、インクルードファイル \fI<sys/mount.h>\fP を使う。
229
230 \fIf_fsid\fP はあるランダムな値を持ち、 (\fIf_fsid\fP,\fIino\fP)  という 1 組の値でファイルを一意に決定できるようにする、
231 というのが基本的な考え方である。 いくつかの OS では、デバイス番号 (の変種) を使ったり、
232 デバイス番号とファイルシステムタイプを組み合わせて使ったりしている。 OS の中には \fIf_fsid\fP
233 フィールドの取得をスーパーユーザに限定しているものもある (非特権ユーザが取得すると 0 となる)。 NFS でエクスポートされる場合、
234 このフィールドがファイルシステムのファイルハンドルで使われており、 この値を提供するとセキュリティ上の問題がある。
235 .LP
236 いくつかの OS では、 \fIfsid\fP を \fBsysfs\fP(2)  システムコールの第 2 引き数として使用できる。
237 .SH バグ
238 .\" broken in commit ff0c7d15f9787b7e8c601533c015295cc68329f8
239 .\" fixed in commit d70ef97baf048412c395bb5d65791d8fe133a52b
240 Linux 2.6.38 から Linux 3.1 までは (3.1 を含む)、 \fBfstatfs\fP() は \fBpipe\fP(2)
241 で作成されたファイルディスクリプタに対してはエラー \fBENOSYS\fP で失敗していた。
242 .SH 関連項目
243 \fBstat\fP(2), \fBstatvfs\fP(2), \fBpath_resolution\fP(7)
244 .SH この文書について
245 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.77 の一部
246 である。プロジェクトの説明とバグ報告に関する情報は
247 http://www.kernel.org/doc/man\-pages/ に書かれている。