これは、使用しているオペレーティングシステムとファイルの種類によって異なります。私はあなたがiOS上にいると仮定します(その場合は、iOSが使用するファイルシステムを使用しています)。
stat
システムコールは、いくつかのタイムスタンプを含むファイルに関する情報をstruct stat
という構造体に返します。構造体は、各タイムスタンプをstruct timespec
として格納します。 struct timespec
には秒のフィールドtv_sec
とナノ秒のフィールドtv_nsec
が含まれています。理論的には、ファイルに対してナノ秒解像度のタイムスタンプを取得できます。
実際には、2番目の解像度のタイムスタンプしかないようです。私はこのコードを使用してテスト:iOSの5.0.1を実行している私のiPhone 4Sの
struct stat sb;
stat([NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"].UTF8String, &sb);
、その結果得た:
(gdb) p sb
$1 = {
st_dev = 234881033,
st_mode = 33188,
st_nlink = 1,
st_ino = 11265454,
st_uid = 501,
st_gid = 20,
st_rdev = 0,
st_atimespec = {
tv_sec = 1330753666,
tv_nsec = 0
},
st_mtimespec = {
tv_sec = 1330753664,
tv_nsec = 0
},
st_ctimespec = {
tv_sec = 1330753664,
tv_nsec = 0
},
st_birthtimespec = {
tv_sec = 1330417559,
tv_nsec = 0
},
st_size = 830,
st_blocks = 8,
st_blksize = 4096,
st_flags = 0,
st_gen = 0,
st_lspare = 0,
st_qspare = {0,
0}
}
あなたはtv_nsec
すべてのフィールドが0であることが確認できそうにありません偶然になる。
歴史的に、HFS Plus(Mac OS Xネイティブファイルシステム、おそらくiOSでも使用されていた)は、1904年1月1日午前0時からの秒数を表す32ビットの符号なし整数に各タイムスタンプを保存しました。 (おそらく、ある時点で、タイムスタンプを64ビットに拡張した(または、2040年以前に32ビットタイムスタンプがラップアラウンドする)ので、分数ビットを追加しなかったようです。
なぜその精度は必要でしょうか?ただ尋ねる。 –
例えば、1秒以内に修正されたいくつかのファイルのうち最後に修正されたファイル(N番目のファイルの内容に基づいてN-1ファイルを生成する)を確認するには、 –