Erhalte den letzten modifizierten Zeitpunkt der Datei in Linux

9
___ answer10446681 ___

Dies ist einer jener Fälle, in denen Zeitzonen eine Rolle spielen. Du bekommst mylog.txt.1 von mylog.txt.2 . Sie sollten stattdessen mylog.txt.3 viz.

verwenden %Vor%

Das liegt daran, dass mylog.txt.1 Ihre Zeitzoneninformationen verwendet und wenn Sie mylog.txt.2 als Teil der Anzeige verwendet haben, hat es bewusst keine Zeitzoneninformationen weggelassen.

    
___ answer10446821 ___

Das hat gut für mich funktioniert:

%Vor%     
___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ qstnhdr ___ Erhalte den letzten modifizierten Zeitpunkt der Datei in Linux ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ tag123timestamp ___ Ein Zeitstempel ist der Zeitpunkt, zu dem ein Ereignis von einem Computersystem aufgezeichnet wird. Der Zeitstempelbegriff kann sich auch auf die Unix-Zeit oder auf den Zeitstempeldatentyp beziehen. ___ tag123lastmodified ___ hilf uns dieses Wiki zu bearbeiten ___ answer10446679 ___

Dinge zu beheben:

  • Verwenden Sie das richtige Feld, d. h. mylog.txt.3 .
  • Überprüfen Sie, ob st_ctime erfolgreich ist, bevor Sie das Ergebnis verwenden.
  • Verwenden Sie st_mtime , um das Risiko zu beseitigen, die falsche Puffergröße zu verwenden.

Ich habe zuerst vermutet, dass Ihr Dateisystem die zuletzt geänderte Zeit nicht unterstützt, aber da Sie sagen, dass andere Tools es zeigen, vermute ich, dass der Code aus irgendeinem Grund bricht.

Könnte es sein, dass die Dateinamen keine vollständigen Pfadnamen sind, d. h. sie enthalten nicht das richtige Verzeichnispräfix?

    
___
Boardy 04.05.2012, 09:50
quelle

3 Antworten

9

Dies ist einer jener Fälle, in denen Zeitzonen eine Rolle spielen. Du bekommst gmtime von st_mtime . Sie sollten stattdessen localtime viz.

verwenden %Vor%

Das liegt daran, dass ls Ihre Zeitzoneninformationen verwendet und wenn Sie gmtime als Teil der Anzeige verwendet haben, hat es bewusst keine Zeitzoneninformationen weggelassen.

    
Petesh 04.05.2012, 10:01
quelle
10

Das hat gut für mich funktioniert:

%Vor%     
qwertz 04.05.2012 10:12
quelle
3

Dinge zu beheben:

  • Verwenden Sie das richtige Feld, d. h. st_ctime .
  • Überprüfen Sie, ob stat() erfolgreich ist, bevor Sie das Ergebnis verwenden.
  • Verwenden Sie strftime(date, sizeof date, ... , um das Risiko zu beseitigen, die falsche Puffergröße zu verwenden.

Ich habe zuerst vermutet, dass Ihr Dateisystem die zuletzt geänderte Zeit nicht unterstützt, aber da Sie sagen, dass andere Tools es zeigen, vermute ich, dass der Code aus irgendeinem Grund bricht.

Könnte es sein, dass die Dateinamen keine vollständigen Pfadnamen sind, d. h. sie enthalten nicht das richtige Verzeichnispräfix?

    
unwind 04.05.2012 10:01
quelle

Tags und Links