0

stat()呼び出しとそれに対応するstruct statに、1秒を超える精度のファイル時間のフィールドが含まれていないことを発見しました。これらの時間を設定するために、さまざまな{f,l}utime{n,}s()機能がありますが、取得するためのものではありません。

では、できればPOSIX APIを使用して、これらの時間をナノ秒の精度でどのように取得するのでしょうか。

4

2 に答える 2

3

stat返される構造は、stat()POSIX.1-2008用にアップグレードされています。

このstruct stat構造には、次の3つの変更時間が含まれています。

struct timespec st_atim - Last data access timestamp. 
struct timespec st_mtim - Last data modification timestamp. 
struct timespec st_ctim - Last file status change timestamp.

このOpenGroupリンクHeaders, <sys/stat.h>から)そしてそれstruct timespecはそこに(で<time.h>)少なくとも以下を含むものとして定義されています:

time_t  tv_sec          - Seconds. 
long    tv_nsec         - Nanoseconds. 

以前は、これらの3回はtime_t、1秒の解像度の値でした。

于 2010-08-02T08:50:56.687 に答える
1

ほとんどのファイルシステムは、そのような正確なタイムスタンプを保持していません。ここから:

ext3を含むほとんどのファイルシステムには、1秒まで正確なタイムスタンプデータが含まれています。Ext4は、このデータの精度をナノ秒に拡張します。一部の情報源は、ext4タイムスタンプがext3の2038年1月18日に対して、2514年4月25日までの日付をサポートすることも示しています。

于 2010-08-02T08:35:40.853 に答える