3

stat()Cを学習し、atime/mtime属性とnsec精度値に対して返される変数のタイプとサイズを視覚的に比較しようとしています。

私はファイルを実行していて、返されたstat構造からmtimeとmtime nsecの値を取得し、これらの値を別々の変数に格納したいと思っています(次に、これらの値を...長い話stat()に渡したいです!)。http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html#NOTESに よると、さまざまなOS /ビルド条件から、またはそれに応じて値を取得できます。私の実際のプログラムでは、両方をチェックして、設定されている方を使用するか、通常の2番目の精度にフォールバックします。utimes()
st_mtim.tv_nsecst_mtimensecst_mtime

によって返される通常のタイムスタンプを保存するには、どの変数のタイプとサイズを宣言する必要がありst_mtimeますか?

またはからnsec値を格納するために、どの変数タイプとサイズを宣言する必要がありますst_mtim.tv_nsecst_mtimensec
これらは、時間の秒数を含む小数ですか?それとも、時間のnsec部分を返すだけですか?

システムのアーキテクチャに応じて、nsecに対して異なる可変サイズを宣言する必要がありますか?

そして最後に、これらの変数を使用して出力するために必要な変換指定子は何printf()ですか?

乾杯、B

4

2 に答える 2

4
  1. st_mtimeである必要がありtime_tます。
  2. POSIXによると<time.h>、のタイプtv_nsecはちょうどlongです。
  3. のようなフィールドst_mtim.tv_nsecは、ナノ秒数を返します。
  4. の場合、long必要lです; のためtime_tに、それは明確に定義されていません、AFAIK。
于 2012-05-23T00:37:11.743 に答える
1

st_mtim.tv_nsec常に[0,999999999]の範囲にあります。から秒を取得する必要がありますtv_sec。理論的には、秒に1000000000を掛けて、64ビット値にまとめて格納できますが、数百年ほどでオーバーフローします。

于 2012-05-23T01:48:38.090 に答える