STAT(2) FreeBSD システムコールマニュアル STAT(2)
名称
stat, lstat, fstat − ファイルステータスの取得 |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/types.h> int |
stat(const char *path, struct stat *sb); int |
lstat(const char *path, struct stat *sb); int |
fstat(int fd, struct stat *sb); |
解説 |
stat() システムコールは、 path が指すファイルの情報を取得します。指定した ファイルの読取り権、書込み権、実行権は必要ありません。しかし、そのファイ ルへ至るパス名で列挙されたすべてのディレクトリは、検索可能であることが必 要です。 lstat() 関数は stat() に似ていますが、指定したファイルがシンボリックリン クである場合は異なります。 lstat() はリンクの情報を戻しますが、 stat() は リンクが参照するファイルの情報を返します。 fstat() システムコールは、ファイル記述子 fd で区別されるオープンファイル について、上と同じ情報を取得します。 引数 sb は、構造体 stat へのポインタです。これは、 <sys/stat.h> で定義さ れ、ファイルに関する情報を保持します。 ファイルシステムに関連する struct stat のフィールドは以下のとおりです: |
st_dev
ファイルを含むデバイスの数値 ID。 st_ino st_nlink st_dev と st_ino フィールドはともにシステム中で唯一のファイルを特定しま す。 struct stat の時刻に関するフィールドは、以下のとおりです: st_atime st_mtime st_ctime st_birthtime _POSIX_SOURCE が定義されていない場合、時刻に関するフィールドは以下のよう に定義されます: #ifndef _POSIX_SOURCE struct stat のサイズに関するフィールドは、以下のとおりです: |
st_size
バイトで表されるファイルサイズ。 st_blksize st_blocks struct stat のアクセス関連のフィールドは以下のとおりです: st_uid st_gid st_mode ステータス情報ワード st_mode には、以下のようなビットがあります: #define S_IFMT 0170000 /* ファイルのタイプ */ アクセスモードのリストについては、 <sys/stat.h>, access(2), chmod(2) を参 照してください。以下のマクロは m 引数で渡された st_mode 値が指定されたタ イプのファイルに対応しているかどうかテストするために利用可能です: |
S_ISBLK(m)
ブロック特殊ファイルかどうかテストする。 S_ISCHR(m) S_ISDIR(m) S_ISFIFO(m) S_ISLNK(m) S_ISREG(m) S_ISSOCK(m) S_ISWHT(m) マクロは、テストが真なら 0 以外、またはテストが偽なら 0 に評価します。 戻り値 |
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。 |
互換性
以前のバージョンのシステムでは、 st_dev, st_uid, st_gid, st_rdev, st_size, st_blksize, st_blocks フィールドに別のタイプを使用していました。 |
エラー
stat() システムコールと lstat() システムコールは、以下のような場合にエ ラーとなります: |
[EACCES]
指定されたパスには、検索が許可されていないディレクトリ が含まれています。 [EFAULT] [EIO] [ELOOP] [ENAMETOOLONG] [ENOENT] [ENOTDIR] [EOVERFLOW] fstat() システムコールは、以下のような場合にエラーとなります: [EBADF] [EFAULT] [EIO] [EOVERFLOW] 関連項目 |
access(2), chmod(2), chown(2), utimes(2), symlink(7), sticky(8) |
バグ
fstat() をソケット (およびパイプ) に適用すると、ブロックサイズフィール ド、および固有デバイスと inode 番号以外に 0 の入ったバッファが戻されま す。 |
規格
stat() システムコールと fstat() システムコールは、 ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合しています。 |
歴史
stat() システムコールと fstat() システムコールは、 Version 7 AT&T UNIX で 登場しました。 lstat() システムコールは 4.2BSD で登場しました。 FreeBSD 10.0 November 15, 2004 FreeBSD 10.0 |