12

一部のファイルシステム (ext4 や JFS など) は、atime/mtime フィールドのナノ秒単位の解像度を提供します。ns 解像度フィールドを読み取るにはどうすればよいですか? statシステムコールは、2 番目のtime_t解決策であるを返します。

4

1 に答える 1

12

二次解決時間は次のフィールドにあります。

           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
于 2011-08-26T14:22:47.980 に答える