2012-04-01 7 views
0

ich ein Projekt, in dem ich eine Datei erschaffe und auch die Datei Erstellungszeit immer mit: -Caching Der Time Stamp

stat("C:/repos/trunk/logging/test.log",&attrib); 

Ich möchte das letzte Mal Stempel zwischenzuspeichern, so dass ich das nicht nehmen auf jeder Protokollnachricht.

Bitte bieten Sie Hilfe an.

Dank

+1

Was meinen Sie mit "Cache den letzten Zeitstempel"? Was immer Sie cachen möchten, warum speichern Sie es nicht einfach in einer Variablen? –

+0

Ich möchte es nur zwischenspeichern, so dass ich nicht auf jede Log-Nachricht treffen muss. Auch das Speichern in einer Variablen wäre wie String date1 // eine Variable, die als global deklariert wurde oder etwas Ähnliches, was ich getan habe: - stat ("C: /repos/trunk/logging/test.log", & attrib); Uhr = gmtime (& (attrib.st_ctime)); – gandhigcpp

+0

Nun, Sie * könnte * eine globale verwenden, aber Sie sollten versuchen, einen Weg zu finden, um es zu vermeiden. Aber was auch immer Sie tun, es beinhaltet das Speichern der Informationen * irgendwo *. –

Antwort

0

stat nicht geben Sie die Erstellungszeit einreichen. Sie erhalten die Zeit zum Ändern der Datei, die Zugriffszeit und die Zeit zum Ändern der Inode.

Sie können diese Informationen sicher zwischenspeichern, wenn Sie wollen, vorbehaltlich der normalen Probleme des Caching, das heißt, Sie laufen das Risiko von veralteten Daten im Cache, wenn die Datei geändert wird und Sie nicht noch einmal schnell genug überprüfen .

Wenn Ihr Programm single-threaded ist und Sie nur mit einer Datei arbeiten, können Sie zum Beispiel eine static Variable verwenden. Andernfalls möchten Sie möglicherweise ein Objekt (im OO-Sinne) erstellen, das den zwischengespeicherten Zeitstempel und eine TTL für den zwischengespeicherten Wert als internen Status speichert und Methoden zum Abfragen und/oder Aktualisieren des Werts bereitstellt.

+0

: Ich war das Auschecken der Statistik-Funktionalität und es zeigte, dass mit dem: - stat ("C: /repos/trunk/logging/test.log", & attrib); clock = gmtime (& (attrib.st_ctime)); // st_ctime gibt die Erstellungszeit an, ich sage nicht, dass es single threaded ist, aber ich bin derzeit mit einer einzigen Datei beschäftigt – gandhigcpp

+0

Nein, ['st_ctime' ist die Inode-Änderungszeit] (http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/stat.h.html). Dies bedeutet den Zeitpunkt, an dem die Attribute der Datei (wie Berechtigungen, Timstamps, erweiterte Attribute usw.) zuletzt geändert wurden, im Gegensatz zu 'st_mtime', dem Zeitpunkt, zu dem der _contents_ der Datei zuletzt geändert wurde. – Celada

+0

: Wenn ich also nur die Zeit haben muss, als die Datei gerade erstellt wurde, was sollte ich dafür verwenden und einige Vorschläge machen, die Zeit irgendwo zu sortieren ... – gandhigcpp