一部のファイルシステム (ext4 や JFS など) は、atime/mtime フィールドのナノ秒単位の解像度を提供します。ns 解像度フィールドを読み取るにはどうすればよいですか? stat
システムコールは、2 番目のtime_t
解決策であるを返します。
1 に答える
二次解決時間は次のフィールドにあります。
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 */
しかし、man http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.htmlの「NOTES」セクションには次のように書かれています。
カーネル 2.5.48 以降、stat 構造体は 3 つのファイル タイムスタンプ フィールドのナノ秒単位の解像度をサポートしています。_BSD_SOURCE または _SVID_SOURCE 機能テスト マクロが定義されている場合、glibc は st_atim.tv_nsec 形式の名前を使用して各フィールドのナノ秒コンポーネントを公開します。これらのフィールドは POSIX.1-2008 で指定されており、バージョン 2.12 以降では、_POSIX_C_SOURCE が 200809L 以上の値で定義されているか、_XOPEN_SOURCE が 700 以上の値で定義されている場合、glibc はこれらのフィールド名も公開します。前述のマクロが定義されていない場合、ナノ秒値は st_atimensec 形式の名前で公開されます。
したがって、時間の nsec 部分は同じ「struct stat」にあります: ( /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