日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
STAT(2) FreeBSD システムコールマニュアル STAT(2) 名称 stat, lstat, fstat, fstatat -- ファイルのステータスを取得する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/stat.h> int stat(const char * restrict path, struct stat * restrict sb); int lstat(const char * restrict path, struct stat * restrict sb); int fstat(int fd, struct stat *sb); int fstatat(int fd, const char *path, struct stat *sb, int flag); 解説 stat() システムコールは、path によって指されるファイルに関する情報を取得 します。指定されたファイルの読み込み、書き込みまたは実行パーミッション は、必要とされませんが、ファイルに先導するパス名でリストされたすべての ディレクトリは、検索可能でなければなりません。 lstat() システムコールは、指定されたファイルがシンボリックリンクである場 合を除いて、stat() に似ていますが、その場合に、lstat() は、リンクに関する 情報を返す一方、stat() は、リンクが参照するファイルに関する情報を返しま す。 fstat() システムコールは、ファイル記述子 fd によって知られているオープン されたファイルに関する同じ情報を取得します。 fstatat() システムコールは、path が相対パスを指定する場合を除いて、stat() と lstat() と同等です。この場合、状態は、カレントワーキングディレクトリの 代わりにファイル記述子 fd に関連しているディレクトリに相対的なファイルか ら検索されます。 flag のための値は、<fcntl.h> で定義され、次のリストからフラブのビット単位 の包括的論理和 (OR) によって構成されます: AT_SYMLINK_NOFOLLOW path 名がシンボリックリンクであるなら、シンボリックリンクの状態が 返されます。 fstatat() が、fd パラメータの特別な値 AT_FDCWD を渡されるなら、カレント ワーキングディレクトリが、使用され、振る舞いは、AT_SYMLINK_NOFOLLOW ビッ トが flag に設定されているかどうかにより、それぞれ stat() または lstat() への呼び出しと同じです。 sb 引数は、<sys/stat.h> によって定義され、情報が、ファイルに関して置かれ る、stat 構造体へのポインタです。 ファイルシステムに関連する struct stat フィールドは、次の通りです: st_dev ファイルを含むデバイスの数値 ID。 st_ino ファイルの i ノード番号。 st_nlink ファイルへのハードリンクの数。 st_dev と st_ino フィールドは、ともにシステム中で唯一のファイルを特定しま す。 struct stat の時刻に関連するフィールドは、次の通りです: st_atim ファイルデータが最後にアクセスされたときの時刻。read(2) と readv(2) のような syscall によって暗黙のうちに変更され、 utimes(2) によって明白に変更されます。 st_mtim ファイルデータが最後に修正されたときの時刻。truncate(2), write(2) と writev(2) のような syscall によって暗黙のうちに 変更され、utimes(2) によって明白に変更されます。また、ディレ クトリ内容を修正するあらゆる syscall は、影響されたディレク トリのための st_mtim を変更します。例えば、creat(2), mkdir(2), rename(2), link(2) と unlink(2)。 st_ctim ファイルステータスが最後に変更されたときの時刻 (inode データ の修正)。chflags(2), chmod(2), chown(2), truncate(2), utimes(2) と write(2) のように st_mtim を含んで、ファイルの メタデータに影響するあらゆる syscall によって暗黙に変更され ます。また、ディレクトリ内容を修正するあらゆる syscall は、 影響されたディレクトリのために st_ctim を変更します。例え ば、creat(2), mkdir(2), rename(2), link(2) と unlink(2)。 st_birthtim inode が作成されたときの時刻。 次の時刻に関連するマクロは、互換性のために定義されています: #define st_atime st_atim.tv_sec #define st_mtime st_mtim.tv_sec #define st_ctime st_ctim.tv_sec #ifndef _POSIX_SOURCE #define st_birthtime st_birthtim.tv_sec #endif #ifndef _POSIX_SOURCE #define st_atimespec st_atim #define st_mtimespec st_mtim #define st_ctimespec st_ctim #define st_birthtimespec st_birthtim #endif struct stat のサイズに関連するフィールドは、次の通りです: st_size バイト単位のファイルサイズ。 st_blksize ファイルのための最適な I/O ブロックサイズ。 st_blocks 512 バイト単位のファイルに割り付けられたブロックの実際の数。 短いシンボリックリンクが inode に格納されるので、この数値は、 0 になります。 struct stat のアクセス関連のフィールドは、次の通りです: st_uid ファイルの所有者のユーザID。 st_gid ファイルのグループID。 st_mode ファイルの状態 (下記参照)。 ステータス情報ワード st_mode には、次のビットがあります: #define S_IFMT 0170000 /* ファイルマスクのタイプ */ #define S_IFIFO 0010000 /* 名前付きパイプ (fifo) */ #define S_IFCHR 0020000 /* キャラクタ特殊ファイル */ #define S_IFDIR 0040000 /* ディレクトリ */ #define S_IFBLK 0060000 /* ブロック特殊ファイル */ #define S_IFREG 0100000 /* 通常 */ #define S_IFLNK 0120000 /* シンボリックリンク */ #define S_IFSOCK 0140000 /* ソケット */ #define S_IFWHT 0160000 /* ホワイトアウト */ #define S_ISUID 0004000 /* 実行時のセットユーザ ID */ #define S_ISGID 0002000 /* 実行時のセットグループ ID */ #define S_ISVTX 0001000 /* 使用後でさえスワップされたテキストを保存 */ #define S_IRWXU 0000700 /* 所有者のための RWX マスク */ #define S_IRUSR 0000400 /* 読み込みパーミッション, 所有者 */ #define S_IWUSR 0000200 /* 書み込みパーミッション, 所有者 */ #define S_IXUSR 0000100 /* 実行/検索パーミッション, 所有者 */ #define S_IRWXG 0000070 /* グループのための RWX マスク */ #define S_IRGRP 0000040 /* 読み込みパーミッション, グループ */ #define S_IWGRP 0000020 /* 書き込みパーミッション, グループ */ #define S_IXGRP 0000010 /* 実行/検索パーミッション, グループ */ #define S_IRWXO 0000007 /* その他のための RWX マスク */ #define S_IROTH 0000004 /* 読み込みパーミッション, その他 */ #define S_IWOTH 0000002 /* 書き込みパーミッション, その他 */ #define S_IXOTH 0000001 /* 実行/検索パーミッション, その他 */ アクセスモードのリストについては、<sys/stat.h>, access(2), chmod(2) を参 照してください。次のマクロは、m 引数で渡された st_mode 値が指定されたタイ プのファイルに対応しているかどうかテストするために利用可能です: S_ISBLK(m) ブロック特殊ファイルかどうかテストする。 S_ISCHR(m) キャラクタ特殊ファイルかどうかテストする。 S_ISDIR(m) ディレクトリかどうかテストする。 S_ISFIFO(m) パイプか FIFO 特殊ファイルかどうかテストする。 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] sb または path 引数が無効のアドレスを指しています。 [EIO] I/O エラーが、ファイルシステムから読み込む間に、または 書き込む間に起こりました。 [ELOOP] パス名の変換で、あまりに多くのシンボリックリンクに遭遇 しました。 [ENAMETOOLONG] パス名の構成要素が 255 文字を越えているか、または全体 のパス名が 1023 文字を越えています。 [ENOENT] 指定されたファイルが、存在しません。 [ENOTDIR] パス接頭辞の構成要素がディレクトリではありません。 [EOVERFLOW] バイト単位のファイルサイズが、sb によって指された構造 体で正しく表現することができません。 fstat() システムコールは、次の場合に失敗します: [EBADF] fd 引数が、有効にオープンされたファイル記述子ではあり ません。 [EFAULT] sb 引数が、無効のアドレスを指しています。 [EIO] I/O エラーが、ファイルシステムから読み込む間に、または 書き込む間に起こりました。 [EOVERFLOW] バイト単位のファイルサイズが、sb によって指された構造 体で正しく表現することができません。 lstat() によって返されたエラーに加えて fstatat() は、次の場合に失敗しま す: [EBADF] path 引数が、絶対パスを指定していません、そして fd 引 数は、AT_FDCWD でもなく検索のためにオープンされた有効 なファイル記述子でもありません。 [EINVAL] flag 引数の値は、有効ではありません。 [ENOTDIR] path 引数が、絶対パスではありません、そして fd が、 AT_FDCWD でもなくディレクトリに関連しているファイル記 述子でもありません。 関連項目 access(2), chmod(2), chown(2), fhstat(2), statfs(2), utimes(2), sticky(7), symlink(7) 規格 stat() と fstat() システムコールは、ISO/IEC 9945-1:1990 (``POSIX.1'') に 適合するはずです。fstatat() システムコールは、The Open Group Extended API Set 2 仕様に従っています。 歴史 stat() と fstat() システムコールは、Version 7 AT&T UNIX で登場しました。 lstat() システムコールは、4.2BSD で登場しました。fstatat() システムコール は、FreeBSD 8.0 で登場しました。 バグ fstat() をソケットに適用することは、ブロックサイズのフィールドとユニーク なデバイスと inode 番号を除いて、0 で埋められたバッファを返します。 FreeBSD 11.4 December 5, 2018 FreeBSD 11.4