OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / LDP_man-pages / release / man2 / stat.2
1 '\" t
2 .\" Hey Emacs! This file is -*- nroff -*- source.
3 .\"
4 .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
5 .\" Parts Copyright (c) 1995 Nicolai Langfeldt (janl@ifi.uio.no), 1/1/95
6 .\" and Copyright (c) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
7 .\"
8 .\" Permission is granted to make and distribute verbatim copies of this
9 .\" manual provided the copyright notice and this permission notice are
10 .\" preserved on all copies.
11 .\"
12 .\" Permission is granted to copy and distribute modified versions of this
13 .\" manual under the conditions for verbatim copying, provided that the
14 .\" entire resulting derived work is distributed under the terms of a
15 .\" permission notice identical to this one.
16 .\"
17 .\" Since the Linux kernel and libraries are constantly changing, this
18 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
19 .\" responsibility for errors or omissions, or for damages resulting from
20 .\" the use of the information contained herein.  The author(s) may not
21 .\" have taken the same level of care in the production of this manual,
22 .\" which is licensed free of charge, as they might when working
23 .\" professionally.
24 .\"
25 .\" Formatted or processed versions of this manual, if unaccompanied by
26 .\" the source, must acknowledge the copyright and authors of this work.
27 .\"
28 .\" Modified by Michael Haardt <michael@moria.de>
29 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
30 .\" Modified 1995-05-18 by Todd Larason <jtl@molehill.org>
31 .\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
32 .\" Modified 1995-01-09 by Richard Kettlewell <richard@greenend.org.uk>
33 .\" Modified 1998-05-13 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
34 .\" Modified 1999-07-06 by aeb & Albert Cahalan
35 .\" Modified 2000-01-07 by aeb
36 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
37 .\" 2007-06-08 mtk: Added example program
38 .\" 2007-07-05 mtk: Added details on underlying system call interfaces
39 .\"
40 .\" Japanese Version Copyright (c) 1998-1999 HANATAKA Shinya
41 .\" and Copyright (c) 2005-2008 Akihiro MOTOKI
42 .\"
43 .\" Translated 1998-06-21, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
44 .\" Modified 1999-04-16, HANATAKA Shinya
45 .\" Updated 2000-01-03, Kentaro Shirakata <argrath@ub32.org>
46 .\" Updated 2000-10-06, Kentaro Shirakata
47 .\" Updated 2001-04-09, Kentaro Shirakata
48 .\" Updated 2001-06-25, Kentaro Shirakata
49 .\" Updated 2005-02-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
50 .\" Updated 2005-09-06, Akihiro MOTOKI
51 .\" Updated 2005-11-19, Akihiro MOTOKI, catch up to LDP v2.14
52 .\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36
53 .\" Updated 2007-06-13, Akihiro MOTOKI, LDP v2.55
54 .\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.08
55 .\"
56 .\"WORD:        status                  状態
57 .\"WORD:        directory               ディレクトリ
58 .\"WORD:        open                    オープン
59 .\"WORD:        implement               実装
60 .\"WORD:        owner                   所有者
61 .\"WORD:        group                   グループ
62 .\"WORD:        user                    ユーザー
63 .\"WORD:        other                   他人
64 .\"WORD:        hard link count         ハード・リンク数
65 .\"WORD:        symbolic link           シンボリック・リンク
66 .\"WORD:        socket                  ソケット
67 .\"WORD:        device                  デバイス
68 .\"WORD:        sticky bit              スティッキー・ビット
69 .\"WORD:        mandatory locking       強制ロック
70 .\"
71 .TH STAT 2 2010-12-03 "Linux" "Linux Programmer's Manual"
72 .SH 名前
73 stat, fstat, lstat \- ファイルの状態を取得する
74 .SH 書式
75 .B #include <sys/types.h>
76 .br
77 .B #include <sys/stat.h>
78 .br
79 .B #include <unistd.h>
80 .sp
81 .BI "int stat(const char *" path ", struct stat *" buf );
82 .br
83 .BI "int fstat(int " fd ", struct stat *" buf );
84 .br
85 .BI "int lstat(const char *" path ", struct stat *" buf );
86 .sp
87 .in -4n
88 glibc 向けの機能検査マクロの要件
89 .RB ( feature_test_macros (7)
90 参照):
91 .in
92 .sp
93 .BR lstat ():
94 _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
95 .SH 説明
96 .PP
97 これらの関数はファイルについての情報を返す。
98 ファイルそのものに対するアクセス許可は必要としないが、
99 \(em
100 .BR stat ()
101
102 .BR lstat ()
103 の場合には
104 \(em
105 そのファイルへ至る
106 .I path
107 を構成する全てのディレクトリに対する実行 (検索) 許可が必要である。
108 .PP
109 .BR stat ()
110
111 .I path
112 で指定されたファイルの状態を取得して
113 .I buf
114 へ格納する。
115
116 .BR lstat ()
117
118 .BR stat ()
119 と同じであるが、
120 .I path
121 がシンボリックリンクの場合、リンクが参照しているファイルではなく、
122 リンク自身の状態を取得する点が異なる。
123
124 .BR fstat ()
125
126 .BR stat ()
127 と同じだが、
128 状態を取得するファイルをファイル・ディスクリプタ
129 .I fd
130 で指定する。
131 .PP
132 これらのシステムコールはいずれも、結果を
133 .I stat
134 構造体に入れて返す。
135 .I stat
136 構造体には以下のフィールドが含まれている:
137 .PP
138 .in +4n
139 .nf
140 struct stat {
141     dev_t     st_dev;     /* ファイルがあるデバイスの ID */
142     ino_t     st_ino;     /* inode 番号 */
143     mode_t    st_mode;    /* アクセス保護 */
144     nlink_t   st_nlink;   /* ハードリンクの数 */
145     uid_t     st_uid;     /* 所有者のユーザ ID */
146     gid_t     st_gid;     /* 所有者のグループ ID */
147     dev_t     st_rdev;    /* デバイス ID (特殊ファイルの場合) */
148     off_t     st_size;    /* 全体のサイズ (バイト単位) */
149     blksize_t st_blksize; /* ファイルシステム I/O での
150                              ブロックサイズ */
151     blkcnt_t  st_blocks;  /* 割り当てられた 512B のブロック数 */
152     time_t    st_atime;   /* 最終アクセス時刻 */
153     time_t    st_mtime;   /* 最終修正時刻 */
154     time_t    st_ctime;   /* 最終状態変更時刻 */
155 };
156 .fi
157 .in
158 .PP
159 .I st_dev
160 フィールドは、このファイルが存在するデバイスを示す
161 (マクロ
162 .BR major (3),
163 .BR minor (3)
164 は、このフィールドのデバイス ID を分解するのに役立つだろう)。
165
166 .I st_rdev
167 フィールドは、このファイル (inode) が表すデバイスを示す。
168
169 .I st_size
170 フィールドは、(通常のファイルかシンボリックリンクの場合に)
171 ファイルの大きさをバイト単位で示す。
172 シンボリックリンクの大きさは、シンボリックリンクに含まれている
173 パス名の長さ (最後の NULL バイトは含まない) である。
174
175 .I st_blocks
176 フィールドは、ファイルの大きさを 512 バイトのブロックサイズ単位で示す
177 フィールドは、ファイルに割り当てされたブロック数を 512 バイト単位で示す。
178 (ファイルに穴があるような場合、この値は
179 .IR st_size /512
180 より小さくなることもある)。
181
182 .I st_blksize
183 フィールドは、効率的にファイル・システム I/O ができる「好ましい」
184 ブロックサイズを示す (もっと小さい単位でファイルに書き込みを行うと、
185 読み出し--修正--再書き込みといった非効率な動作になってしまうかもしれない)。
186 .PP
187 全ての Linux のファイル・システムが全ての時間フィールドを
188 実装しているわけではない。
189 ファイルやディレクトリのアクセスが
190 .I st_atime
191 フィールドを更新しないようなかたちでマウントできるファイルシステムもある。
192 .RB ( mount (8)
193
194 .IR noatime ,
195 .IR nodiratime ,
196 .I relatime
197
198 .BR mount (2)
199 の関連する情報を参照)。
200 また、ファイルが
201 .B O_NOATIME
202 付きでオープンされている場合には
203 .I st_atime
204 は更新されない。
205 .BR open (2)
206 参照。
207
208 .I st_atime
209 フィールドはファイルアクセスがあった場合に変更される
210 (例えば、
211 .BR execve (2),
212 .BR mknod (2),
213 .BR pipe (2),
214 .BR utime (2)
215 を使用した場合や
216 .BR read (2)
217 で 1 バイト以上読み込んだ場合など)。
218 .BR mmap (2)
219 などの他のルーチンでは、
220 .I st_atime
221 は更新されることもあれば、そうでない場合もある。
222
223 .I st_mtime
224 フィールドは、ファイルが修正された場合に変更される
225 (例えば、
226 .BR mknod (2),
227 .BR truncate (2),
228 .BR utime (2)
229 を使用した場合や
230 .BR write (2)
231 で 1 バイト以上書き込みをした場合など)。
232 さらに、ディレクトリの
233 .I st_mtime
234 は、そのディレクトリで
235 ファイルが作成されたり削除されたりすると変更される。
236 .I st_mtime
237 フィールドは
238 所有者やグループやハード・リンク数やモードの変更では変更
239 .I されない。
240
241 .I st_ctime
242 フィールドは書き込みや inode 情報
243 (所有者、グループ、リンク数、モードなど) の
244 設定によって変更される。
245 .PP
246 以下の POSIX マクロは、
247 .I st_mode
248 フィールド
249 で使用されるファイル種別のチェックのために定義されている :
250 .RS 4
251 .TP 1.2i
252 .BR S_ISREG (m)
253 通常のファイルか?
254 .TP
255 .BR S_ISDIR (m)
256 ディレクトリか?
257 .TP
258 .BR S_ISCHR (m)
259 キャラクター・デバイスか?
260 .TP
261 .BR S_ISBLK (m)
262 ブロック・デバイスか?
263 .TP
264 .BR S_ISFIFO (m)
265 FIFO (名前付きパイプ) か?
266 .TP
267 .BR S_ISLNK (m)
268 シンボリック・リンクか? (POSIX.1-1996 にはない)
269 .TP
270 .BR S_ISSOCK (m)
271 ソケットか? (POSIX.1-1996 にはない)
272 .RE
273 .PP
274 以下のフラグが
275 .I st_mode
276 フィールド用に定義されている:
277 .in +4n
278 .TS
279 lB l l.
280 S_IFMT  0170000 ファイル種別を示すビット領域を表すビットマスク
281 S_IFSOCK        0140000 ソケット
282 S_IFLNK 0120000 シンボリック・リンク
283 S_IFREG 0100000 通常のファイル
284 S_IFBLK 0060000 ブロック・デバイス
285 S_IFDIR 0040000 ディレクトリ
286 S_IFCHR 0020000 キャラクター・デバイス
287 S_IFIFO 0010000 FIFO
288 S_ISUID 0004000 set-user-ID bit
289 S_ISGID 0002000 set-group-ID bit (下記参照)
290 S_ISVTX 0001000 スティッキー・ビット (下記参照)
291 S_IRWXU 00700   ファイル所有者のアクセス許可用のビットマスク
292 S_IRUSR 00400   所有者の読み込み許可
293 S_IWUSR 00200   所有者の書き込み許可
294 S_IXUSR 00100   所有者の実行許可
295 S_IRWXG 00070   グループのアクセス許可用のビットマスク
296 S_IRGRP 00040   グループの読み込み許可
297 S_IWGRP 00020   グループの書き込み許可
298 S_IXGRP 00010   グループの実行許可
299 S_IRWXO 00007   他人 (others) のアクセス許可用のビットマスク
300 S_IROTH 00004   他人の読み込み許可
301 S_IWOTH 00002   他人の書き込み許可
302 S_IXOTH 00001   他人の実行許可
303 .TE
304 .in
305 .P
306 set-group-ID bit
307 .RB ( S_ISGID )
308 にはいくつかの特殊な使用法がある:
309 ディレクトリに設定した場合には、そのディレクトリが BSD 方式で使用される
310 ことを示す。つまり、そのディレクトリに作成されたファイルのグループID は
311 作成したプロセスの実効 (effective) グループID ではなく、ディレクトリの
312 グループID を継承する。また、そのディレクトリに作成されたディレクトリにも
313 .B S_ISGID
314 ビットが設定される。グループ実行ビット
315 .RB ( S_IXGRP )
316 が設定されていないファイルに設定された場合は、
317 set-group-ID ビットはファイル/レコードの
318 強制的な (mandatory) ロックを表す。
319 .P
320 ディレクトリにスティッキービット (S_ISVTX) が設定された場合は、
321 そのディレクトリのファイルの名前を変更したり、削除したりできるのは、
322 そのファイルの所有者か、そのディレクトリの所有者か、特権プロセス
323 だけとなる。
324 .SH 返り値
325 成功した場合は 0 を返す。エラーの場合は \-1 を返し、
326 .I errno
327 に適切な値が設定される。
328 .SH エラー
329 .TP
330 .B EACCES
331 .I path
332 が所属するディレクトリとその上位のディレクトリのいずれかに
333 対する検索許可がなかった
334 .RB ( path_resolution (7)
335 も参照のこと)。
336 .TP
337 .B EBADF
338 .I fd
339 が不正である。
340 .TP
341 .B EFAULT
342 アドレスが間違っている。
343 .TP
344 .B ELOOP
345 パスを辿る際に解決すべきシンボリック・リンクが多過ぎた。
346 .TP
347 .B ENAMETOOLONG
348 .I path
349 が長過ぎる。
350 .TP
351 .B ENOENT
352 .I path
353 の構成要素が存在しないか、
354 .I path
355 が空文字列である。
356 .TP
357 .B ENOMEM
358 カーネルのメモリが足りない。
359 .TP
360 .B ENOTDIR
361 .I path
362 の前半部分 (prefix) の構成要素がディレクトリではない。
363 .TP
364 .B EOVERFLOW
365 .RB ( stat ())
366 .I path
367 が、ファイルサイズを
368 .I off_t
369 型で表現できないファイルを参照している。
370 このエラーが起こるのは、32 ビットプラットフォーム上で
371 .I -D_FILE_OFFSET_BITS=64
372 を指定せずにコンパイルされたアプリケーションが、ファイルサイズが
373 .I (1<31)-1
374 ビットを超えるファイルに対して
375 .BR stat ()
376 を呼び出した場合である。
377 .SH 準拠
378 これらのシステムコールは SVr4, 4.3BSD, POSIX.1-2001 に準拠している。
379 .BR stat ()
380
381 .BR fstat ()
382 コールは SVr4, SVID, POSIX, X/OPEN, 4.3BSD に準拠している。
383 .BR lstat ()
384 コールは 4.3BSD と SVr4 に準拠している。
385 .\" SVr4 には他に
386 .\" .BR fstat ()
387 .\" のエラーとして EINTR, ENOLINK, EOVERFLOW が記載されている。
388 .\" SVr4 には他に
389 .\" .BR stat ()
390 .\" と
391 .\" .BR lstat ()
392 .\" のエラーとして EINTR, EMULTIHOP, ENOLINK, EOVERFLOW が記載されている。
393
394 .I st_blocks
395
396 .I st_blksize
397 フィールドの使用はあまり移植性がない。
398 (これらのフィールドは BSD によって導入された。
399 システムごとに解釈が異なっており、
400 NFS マウントの場合には同じシステムでも異なる可能性がある)
401 .LP
402 POSIX には
403 .BR S_IFMT ,
404 .BR S_IFSOCK ,
405 .BR S_IFLNK ,
406 .BR S_IFREG ,
407 .BR S_IFBLK ,
408 .BR S_IFDIR ,
409 .BR S_IFCHR ,
410 .BR S_IFIFO ,
411 .B S_ISVTX
412 ビットについての記述はない。かわりに
413 .BR S_ISDIR ()
414 のようなマクロを使用するように要求している。
415 マクロ
416 .BR S_ISLNK ()
417
418 .BR S_ISSOCK ()
419 は POSIX.1-1996 にはないが、
420 POSIX.1-2001 には両方とも存在する。
421 前者は SVID 4 に、後者は SUSv2 に由来している。
422 .LP
423 Unix V7 (とその後のシステム) は
424 .BR S_IREAD ,
425 .BR S_IWRITE ,
426 .B S_IEXEC
427 を持っており、
428 POSIX はその同義語として
429 .BR S_IRUSR ,
430 .BR S_IWUSR ,
431 .B S_IXUSR
432 を規定している。
433 .SS 他のシステム
434 各種システムで使用されていた(いる)値:
435 .TS
436 l l l l l.
437 16進   名前  ls      8進数 説明
438 f000    S_IFMT          170000  ファイル種別フィールドのビットマスク
439 0000                    000000  SCO では 使用不能 inode;
440                                 BSD では未知のファイル種別;
441                                 SVID-v2 と XPG2 では 0 と 0100000 の
442                                 両方が普通のファイル
443 1000    S_IFIFO p|      010000  FIFO (名前付きパイプ)
444 2000    S_IFCHR c       020000  キャラクタ特殊ファイル (V7)
445 3000    S_IFMPC         030000  多重化されたキャラクタ特殊ファイル (V7)
446 4000    S_IFDIR d/      040000  ディレクトリ (V7)
447 5000    S_IFNAM         050000  XENIX 二つの副型を持つ名前付きの
448                                 特殊ファイル
449                                 副型は \fIst_rdev\fP の値 1,2 で区別される:
450 0001    S_INSEM s       000001  XENIX IFNAMのセマフォー副型
451 0002    S_INSHD m       000002  XENIX IFNAMの共有データ副型
452 6000    S_IFBLK b       060000  ブロック特殊ファイル (V7)
453 7000    S_IFMPB         070000  多重化されたブロック特殊ファイル (V7)
454 8000    S_IFREG -       100000  通常ファイル (V7)
455 9000    S_IFCMP         110000  VxFS 圧縮ファイル
456 9000    S_IFNWK n       110000  ネットワーク特殊ファイル (HP-UX)
457 a000    S_IFLNK l@      120000  シンボリック・リンク (BSD)
458 b000    S_IFSHAD                130000  Solaris ACL のための隠された inode
459                                 (ユーザ空間からは見えない)
460 c000    S_IFSOCK        s=      140000  ソケット (BSD; VxFS の "S_IFSOC")
461 d000    S_IFDOOR        D>      150000  Solaris ドア・ファイル
462 e000    S_IFWHT w%      160000  BSD 空白ファイル (inode を使用しない)
463 0200    S_ISVTX         001000  `スティッキー・ビット':使用後も
464                                 スワップに残す (V7)
465                                 予約 (SVID-v2)
466                                 ディレクトリ以外: ファイルをキャッシュ
467                                 しない (SunOS)
468                                 ディレクトリ: 削除制限フラグ (SVID-v4.2)
469 0400    S_ISGID         002000  実行時の set-group-ID (V7)
470                                 ディレクトリに対しては GID の伝達に
471                                 BSD 方式を使用する
472 0400    S_ENFMT         002000  System V ファイル・ロックを強制する
473                                 (S_ISGID と共有)
474 0800    S_ISUID         004000  実行時の set-user-ID (V7)
475 0800    S_CDF           004000  ディレクトリが状況依存ファイル (HP-UX)
476 .TE
477
478 スティッキー コマンドは Version 32V AT&T UNIX で登場した。
479 .SH 注意
480 カーネル 2.5.48 以降では、
481 .I stat
482 構造体は 3つのファイルのタイムスタンプ関連のフィールドで
483 ナノ秒単位の精度に対応している。
484 glibc では、各フィールドのナノ秒の情報を
485 .I st_atim.tv_nsec
486
487 .I st_atimensec
488 といった形で参照できる。
489 機能検査マクロ
490 .B _BSD_SOURCE
491
492 .B _SVID_SOURCE
493 が定義されている場合には
494 .I st_atim.tv_nsec
495 の形式で、それ以外の場合には
496 .I st_atimensec
497 の形式となる。
498 秒より細かいタイムスタンプをサポートしていないファイルシステムでは、
499 これらのナノ秒のフィールドは 0 に設定される。
500 .\" As at kernel 2.6.25, XFS and JFS support nanosecond timestamps,
501 .\" but ext2, ext3, and Reiserfs do not.
502 .\" FIXME . SUSv4 specifies nanosecond timestamps.
503
504 Linux では、
505 .BR lstat ()
506 は一般には自動マウント動作 (automounter action) のきっかけとならないが、
507 .BR stat ()
508 はきっかけとなる。
509
510 .I /proc
511 ディレクトリ以下にあるファイルのほとんどでは、
512 .BR stat ()
513 を呼び出した際に、
514 .I st_size
515 フィールドにファイルサイズが返されない。
516 代わりに
517 .I st_size
518 フィールドには 0 が返される。
519 .SS 背後のカーネル・インタフェース
520 時間の経過とともに、
521 .I stat
522 構造体のサイズが大きくなり、この影響で
523 .BR stat ()
524 には 3つのバージョンが存在する:
525 .IR sys_stat ()
526 (スロットは
527 .IR __NR_oldstat )、
528 .IR sys_newstat ()
529 (スロットは
530 .IR __NR_stat )、
531 .IR sys_stat64 ()
532 (カーネル 2.4 で導入; スロットは
533 .IR __NR_stat64 ).
534 glibc の
535 .BR stat ()
536 ラッパー関数はこれらの詳細をアプリケーションから隠蔽してくれる。
537 具体的には、カーネルが提供しているシステムコールのうち最新のバージョンを
538 起動し、古いバイナリの場合には必要に応じて返された情報を再構成 (repack) する。
539 .BR fstat ()
540
541 .BR lstat ()
542 についても同様である。
543 .\"
544 .\" A note from Andries Brouwer, July 2007
545 .\"
546 .\" > Is the story not rather more complicated for some calls like
547 .\" > stat(2)?
548 .\"
549 .\" Yes and no, mostly no. See /usr/include/sys/stat.h .
550 .\"
551 .\" The idea is here not so much that syscalls change, but that
552 .\" the definitions of struct stat and of the types dev_t and mode_t change.
553 .\" This means that libc (even if it does not call the kernel
554 .\" but only calls some internal function) must know what the
555 .\" format of dev_t or of struct stat is.
556 .\" The communication between the application and libc goes via
557 .\" the include file <sys/stat.h> that defines a _STAT_VER and
558 .\" _MKNOD_VER describing the layout of the data that user space
559 .\" uses. Each (almost each) occurrence of stat() is replaced by
560 .\" an occurrence of xstat() where the first parameter of xstat()
561 .\" is this version number _STAT_VER.
562 .\"
563 .\" Now, also the definitions used by the kernel change.
564 .\" But glibc copes with this in the standard way, and the
565 .\" struct stat as returned by the kernel is repacked into
566 .\" the struct stat as expected by the application.
567 .\" Thus, _STAT_VER and this setup cater for the application-libc
568 .\" interface, rather than the libc-kernel interface.
569 .\"
570 .\" (Note that the details depend on gcc being used as c compiler.)
571 .SH 例
572 以下のプログラムは
573 .BR stat ()
574 を呼び出し、返ってきた
575 .I stat
576 構造体のフィールドのいくつかを表示する。
577 .nf
578
579 #include <sys/types.h>
580 #include <sys/stat.h>
581 #include <time.h>
582 #include <stdio.h>
583 #include <stdlib.h>
584
585 int
586 main(int argc, char *argv[])
587 {
588     struct stat sb;
589
590     if (argc != 2) {
591         fprintf(stderr, "Usage: %s <pathname>\\n", argv[0]);
592         exit(EXIT_FAILURE);
593     }
594
595     if (stat(argv[1], &sb) == \-1) {
596         perror("stat");
597         exit(EXIT_FAILURE);
598     }
599
600     printf("File type:                ");
601
602     switch (sb.st_mode & S_IFMT) {
603     case S_IFBLK:  printf("block device\\n");            break;
604     case S_IFCHR:  printf("character device\\n");        break;
605     case S_IFDIR:  printf("directory\\n");               break;
606     case S_IFIFO:  printf("FIFO/pipe\\n");               break;
607     case S_IFLNK:  printf("symlink\\n");                 break;
608     case S_IFREG:  printf("regular file\\n");            break;
609     case S_IFSOCK: printf("socket\\n");                  break;
610     default:       printf("unknown?\\n");                break;
611     }
612
613     printf("I\-node number:            %ld\\n", (long) sb.st_ino);
614
615     printf("Mode:                     %lo (octal)\\n",
616             (unsigned long) sb.st_mode);
617
618     printf("Link count:               %ld\\n", (long) sb.st_nlink);
619     printf("Ownership:                UID=%ld   GID=%ld\\n",
620             (long) sb.st_uid, (long) sb.st_gid);
621
622     printf("Preferred I/O block size: %ld bytes\\n",
623             (long) sb.st_blksize);
624     printf("File size:                %lld bytes\\n",
625             (long long) sb.st_size);
626     printf("Blocks allocated:         %lld\\n",
627             (long long) sb.st_blocks);
628
629     printf("Last status change:       %s", ctime(&sb.st_ctime));
630     printf("Last file access:         %s", ctime(&sb.st_atime));
631     printf("Last file modification:   %s", ctime(&sb.st_mtime));
632
633     exit(EXIT_SUCCESS);
634 }
635 .fi
636 .SH 関連項目
637 .BR access (2),
638 .BR chmod (2),
639 .BR chown (2),
640 .BR fstatat (2),
641 .BR readlink (2),
642 .BR utime (2),
643 .BR capabilities (7),
644 .BR symlink (7)