Wie konvertiert st_mtime (die von stat-Funktion) zu einem string oder char
Muss ich konvertieren st_mtime-zu-string-format für die übergabe an die java-Schicht, die ich versuchen, dieses Beispiel zu verwenden http://www.cplusplus.com/forum/unices/10342/ aber compiler-Fehler produzieren,
ungültige Konvertierung von 'long unsigned int*' in 'const time_t* {aka
long int const*}'initializing argument 1 of 'tm* localtime(const time_t*)'
[-fpermissive]
Was ich falsch mache, wie man die Zeit der Erstellung der Datei mit Statistik-Funktion in string-Darstellung.
Hilfe bitte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der stat(2) Mann-Seite, die
st_mtime
Feld ist eintime_t
(D. H. nach dem Lesen der die Zeit(7) Mann-Seite, eine Anzahl von Sekunden seit der unix-Epoche).Müssen Sie localtime(3) zu konvertieren, dass
time_t
zu einemstruct tm
in lokaler Zeit, dann, strftime(3) zu konvertieren, um einchar*
string.So könnte man code so etwas wie:
dann verwenden
timbuf
vielleicht durchstrdup
-ing es.NB. Ich bin mit
localtime_r
denn es ist mehr thread freundlich.verwenden
strftime()
es gibt ein Beispiel in der Mann Seite etwas wie:Drucken würde die Ausgabe:
t
?Dies können Sie erreichen, alternativ:
Deklarieren Sie einen Zeiger auf eine
tm
Struktur:Erklären, ein Zeichen-array der richtigen Größe, die enthalten kann, die Zeit, die Zeichenfolge, die Sie wollen:
Brechen die
st.st_mtime
(wost
ist einstruct
Typstat
, d.h.struct stat st
) in eine lokale Zeit unter Verwendung der Funktionlocaltime()
:Hinweis:
st_mtime
ist ein makro (#define st_mtime st_mtim.tv_sec
) in der man-page von stat(2).Verwenden
sprintf()
um die gewünschte Zeit im format-string oder was auch immer das format, das Sie möchten:NB: Sie sollten
bevor
sprintf()
zu vermeiden, das Risiko von Müll, die sich in multi-threading.