いくつかのファイルシステム(ext4とJFSなど)はatime/mtimeフィールドのナノ秒分解能を提供します。 ns解決フィールドを読み取るにはどうすればよいですか? stat
syscallは、第2解像度であるtime_t
を返します。ファイル(stat?)のnanosecond-atime、mtime、ctimeフィールドを取得します
12
A
答えて
11
二解像度の時間がフィールドにあります。
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
しかし、男http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.htmlの "NOTES" セクションは言う:カーネル2.5.48以降
、stat構造体は、ナノ秒の解像度をサポートしています3つのファイルのタイムスタンプフィールドに適用されます。 Glibcは_BSD_SOURCEまたは _SVID_SOURCEフィーチャテストマクロが定義されている場合は、各 フィールドのナノ秒コンポーネントをst_atim.tv_nsecという形式の名前で公開します。これらのフィールドは POSIX.1-2008で指定され、バージョン2.12からglibcは_POSIX_C_SOURCEが値が200809L以上、または _XOPEN_SOURCEが値700以上で定義されている場合、これらのフィールド の名前も公開します。前述のマクロが のいずれも定義されていない場合、ナノ秒の値は の形式の名前st_atimensecで公開されます。
だから、時間のナノ秒の部分は同じ「構造体スタット」にあります(/usr/include/asm/stat.h)
unsigned long st_atime_nsec;
unsigned int st_mtime_nsec;
unsigned long st_ctime_nsec;
#define STAT_HAVE_NSEC 1
だから、私は私のプログラムがポータブルになりたい場合は、 'st_atim.tv_nsec'か' st_atimensec'のどちらを使うべきですか? – musiphil
NetBSDおよびOSX固有の実装*(ナノ秒をサポートしますが、異なるタイプの広告名を使用する)*と互換性を持たせるには? – user2284570