Bekommen Zeitpunkt der letzten änderung der Datei in linux
Arbeite ich auf ein C-Programm wo ich brauche, um die Uhrzeit der letzten änderung der Datei. Was das Programm tut, ist eine Funktion in einer Schleife durch jede Datei in einem Verzeichnis und bei einer bestimmten Datei(en) gefunden wird, ruft eine andere Funktion, um zu überprüfen, dass die Letzte geänderte Zeiten für die Datei.
Innerhalb der Ordner gibt es eine mylog.txt.1
, mylog.txt.2
und mylog.txt.3
etc. Wenn ich die Liste das Verzeichnis, in linux mit dem ll-Befehl kann ich sehen, dass mylog.txt.1
und mylog.txt.2
modifiziert wurden am 4. Mai und mylog.txt.3
geändert wurde am 3. Mai.
Wenn das Programm überprüft jede dieser Dateien ist es jedoch immer wiederkehrenden, den 3. Mai. Unten ist der code, den ich verwende.
void getFileCreationTime(char *filePath)
{
struct stat attrib;
stat(filePath, &attrib);
char date[10];
strftime(date, 10, "%d-%m-%y", gmtime(&(attrib.st_ctime)));
printf("The file %s was last modified at %s\n", filePath, date);
date[0] = 0;
}
Ich habe versucht, all die verschiedenen Variationen von st_ctime
, d.h. st_mtime
und st_atime
aber Sie alle kehren Sie zurück 3. Mai.
Vielen Dank für jede Hilfe, die Sie bieten können.
strftime
während der Puffer ist 10 lang? warum nicht überprüfen Sie den Rückgabewert von stat
? Wenn stat
fehlschlägt, sind Sie Parsen einen Müll Wert.sorry, war ein Tippfehler
stellen Sie sicher, dass Sie auf der Durchreise sind verschiedene filepath, auch "attrib.st_ctime" geben wird, die "Zeit der letzten Statusänderung", wenn Sie sind auf der Suche nach "die Zeit der letzten änderung" müssen Sie mit "attrib.st_mtime"
InformationsquelleAutor Boardy | 2012-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist einer der Fälle, wo Zeitzonen Angelegenheit. Sie bekommen
gmtime
desst_mtime
. Sie sollte stattdessen mitlocaltime
viz.dies ist, weil
ls
verwendet Ihre Zeitzone Informationen, und wenn Sie verwendet werdengmtime
als Teil des display, bewusst verzichtet jeder Zeitzone Informationen.InformationsquelleAutor Petesh
Dies funktionierte gut für mich:
InformationsquelleAutor qwertz
Dinge zu beheben:
st_ctime
.stat()
gelingt, bevor mit dessen Ergebnis.strftime(date, sizeof date, ...
zu entfernen, das Risiko der Verwendung falscher Puffergröße.Ich zuerst den Verdacht, dass das Dateisystem einfach nicht den support tracking der Uhrzeit der letzten änderung, aber da du sagst, dass andere tools zu verwalten, um zu zeigen, ich vermute, der code bricht, aus welchem Grund auch immer.
Könnte es sein, dass die Dateinamen nicht vollständigen Pfad-Namen, d.h. Sie beinhalten nicht die korrekte Verzeichnis-Präfix?
InformationsquelleAutor unwind