2012-04-01 12 views
0

は、私は私がファイルを作成し、また使用して、ファイルの作成日時を取得していたプロジェクトを持っていますすべてのログメッセージに表示されます。キャッシュザ・タイム・スタンプ

助けてください。

おかげ

+1

「最後のタイムスタンプをキャッシュする」とはどういう意味ですか?何をキャッシュしたいのですが、それを変数に格納するのはなぜですか? –

+0

私はちょうどそれをキャッシュしたいので、すべてのログメッセージにヒットする必要はありません。また、変数date1に格納されている変数に格納されます//グローバルとして宣言された変数またはこれと同様の何か: - stat "C:/repos/trunk/logging/test.log"、&attrib); clock = gmtime(&(attrib.st_ctime)); – gandhigcpp

+0

さて、あなたは*グローバル*を使うことはできますが、避ける方法を見つけようとするべきです。しかし、あなたが何をするにしても、それは*どこかに情報を保管することを含むでしょう。 –

答えて

0

statあなたはファイル作成日時与えるものではありません。ファイルの変更時間、アクセス時間、およびiノードの変更時間を提供します。

キャッシングの通常の問題がある場合は、必要に応じてその情報を確実にキャッシュすることができます。つまり、ファイルが変更されてすぐにもう一度チェックしないと、 。

プログラムがシングルスレッドで、1つのファイルのみを扱う場合は、たとえばstatic変数を使用できます。それ以外の場合は、キャッシュされたタイムスタンプとキャッシュされた値のTTLを内部状態として保持し、値を照会および/または更新するメソッドを提供するオブジェクトを(OOの意味で)作成することができます。

+0

については、私は統計機能をチェックしていました。それは、 - stat( "C:/repos/trunk/logging/test.log"、&attrib );私は現時点では単一のファイルであるとは言いません。 – gandhigcpp

+0

いいえ、 '' st_ctime'はinodeの変更時間です。] clock = gmtime(&(attrib.st_ctime)); // st_ctimeは、 (http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/stat.h.html)。これは、ファイルの属性が最後に変更された時刻である 'st_mtime'ではなく、ファイルの属性(許可、タイムスタンプ、拡張属性など)が最後に変更された時刻を意味します。 – Celada

+0

:ファイルが作成されたばかりの時間が必要な場合は、そのファイルに何を使用すればよいでしょうか?そして、どこかで時間を保存することを提案します。 – gandhigcpp

関連する問題