タイムスタンプ
読み:タイムスタンプ
外語:time stump

 ファイルなどの情報における、作成や更新が行なわれた日時を示す情報。
目次

概要
 オペレーティングシステム(OS)やファイルシステムなどによっても異なるが、多くの場合、ファイルの内容を管理する情報(ファイル名やファイルサイズなど)がファイルシステムに登録され、ファイルの内容が変更された場合は自動的に更新される。
 このタイムスタンプを利用することで、新しいファイルを古いファイルで上書きするときに注意を促したり、ファイル内容の情報の新旧を判断したりできる。

特徴

Windows

FATとNTFS
 FATからNTFSまでで、記録される情報などが色々と拡張されている。
 FATでは、MS-DOSから16ビットWindowsまでは、最終更新日時のみが記憶できる。Windows NT以降、FATでも作成日時、最終アクセス日、の2情報が格納されるようになった。
 NTFSでは、同じ3情報を全てミリ秒単位で記録できる。

取得方法
 Win32では、GetFileTime()関数を使う方法などで、タイムスタンプを取得できる。
 CreateFile()関数で作成または既存ファイルを開き、得られたハンドル(HANDLE型)を引数に与えると、FILETIME型で、作成日時、最終アクセス日時、最終更新日時の3情報が得られる。

UNIX

基本的な情報
 UNIXおよびUNIX互換OSには様々あるが、基本は次の3情報である。

機構
 atimeは、アクセスされた最終日時が記録される。アクセス権を持ってファイルをread(2)した場合にのみ更新され、ファイルをオープンしただけの場合や、write(2)では変更されない。
 mtimeは、ファイルが最後に更新された日時が記録される。write(2)した場合や、あるいはtruncate(2)などをした場合に、変更される。
 ctimeも、ファイルが最後に更新された日時が記録される。mtimeの変更条件のほか、inodeの変更が伴う場合に変更される。ctimeは、inodeが変更されなくてもmtimeが変われば変更される。

システムコール
 UNIXおよびUNIX互換OSでも、システムコールstat(2)でその情報を得ることができる。
 int stat(const char *path, struct stat *buf);
 int fstat(int fd, struct stat *buf);
 int lstat(const char *path, struct stat *buf);
 stat()とfstat()はSVR4、SVID、POSIXX/Open4.3BSDに準拠し、lstat()は4.3BSDとSVR4に準拠する。結果はstruct stat構造体として得られる。lstat()は stat()と同様だが、パスがシンボリックリンクの場合、リンクが参照しているファイルではなくリンク自身の状態を取得する点が異なる。
 ファイルの情報を得るのに、ファイルそのものに対するアクセス権は必要ないが、stat()とlstat()は、そのファイルに至るまでの全てのディレクトリについて実行(検索)の権限が必要である。またfstat()はfdを得るために事前にopenする必要があるため、結果として所定の権限が必要となる。

再検索