STAT(3F)

名前
stat, lstat, fstat - ファイル状態の取得

形式
integer*4 function stat(name,statb)
character*(*) name 0.br integer*4 statb(13)

integer*4 function lstat(name,statb)
character*(*) name
integer*4 statb(13)

integer function fstat(lunit,statb)
integer*4 statb(13)

機能説明
これらのルーチンは、ファイルに関する詳細情報を返します。

関数 stat と lstat は、ファイル名 name による問い合わせを行います。

関数 fstat は、FORTRAN 論理ユニット lunit による問い合わせを行います。

各関数の値は、正常終了の場合はゼロ、 それ以外の場合は該当するエラーコードになります。

変数 statb には、ファイルの状態構造が格納されます。

呼び出しシーケンス

stat:
integer*4 stat, statb(13)
character name*(*)
ierr = stat ( name, statb )

fstat:
integer*4 fstat, logunit, statb(13)
ierr = fstat ( logunit, statb )

lstat:
integer*4 lstat, statb(13)
character name*(*)
ierr = lstat ( name, statb )

配列 statb に返される情報の意味は、 stat (2) で取り上げられている構造体 stat の説明にあるとおりです。 予備の値は含まれていません。 順序は、次のとおりです。

	statb(1)	 存在するデバイスの i ノード
	statb(2)	 ファイルの i ノード番号
	statb(3)	 保護
	statb(4)	 ファイルへのハードリンクの数
	statb(5)	 オーナーのユーザー ID
	statb(6)	 オーナーのグループ ID
	statb(7)	 デバイスのタイプ (i ノードがデバイスの場合)
	statb(8)	 ファイルの合計サイズ
	statb(9)	 ファイルの最終アクセス時刻
	statb(10)	 ファイルの最終変更時刻
	statb(11)	 ファイルの最終状態変更時刻
	statb(12)	 ファイルシステム入出力オプションの最適ブロックサイズ
	statb(13)	 割り当てられたブロックの実際の数

注意事項
これらのルーチンは、 INTEGER*4 データの範囲を超えるような「大きな」ファイル、 つまり、 2 GB 以上あるようなファイル上で使用すると、 エラーや警告メッセージを返さないで、 ファイル全体のサイズ (statb(8)) を 32 ビットに 切り上げた値を返します。 このような大規模ファイルを使用することができるのは、 Solaris 2.6 以降のオペレーティング環境です。 大規模ファイルを使用する際は、 stat64(3F)、 lstat64(3F)、 fstat64(3F) などを使用してください。

lstat が lstat(2) を呼び出す際に、 stat は libc ライブラリにある stat(2) を呼び出します。 これら 2 つの libc 関数の違いについては、 stat(2) のマニュアルページを参照してください。 つまり、ファイルがシンボリックリンクの場合、結果が異なります。 lstat はリンクに関する情報を返しますが、 stat はリンクが参照するファイルについての情報を返します。

ファイル
libfui.a

関連項目
stat(2)、 access(3F)、 perror(3F)、 time(3F)
stat64(3F)、 lstat64(3F)、 fstat64(3F)

使用上の留意点
パス名の長さは、 <sys/param.h> で定義されている MAXPATHLEN の値を超えないようにしてください。