Timestamp der Datei in c++
ich soll zum prüfen einer Datei zu sehen, wenn sein geändert worden und wenn es so ist, dann laden Sie es wieder.. für diese, begann ich mit dem folgenden code, der mir immer nichts...
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
using namespace std;
int main()
{
struct stat st;
int ierr = stat ("readme.txt", &st);
if (ierr != 0) {
cout << "error";
}
int date = st.st_mtime;
while(1){
int newdate = st.st_mtime;
usleep(500000);
if (newdate==date){
cout << "same file.. no change" << endl;
}
else if (newdate!=date){
cout << "file changed" << endl;
}
}
}
alle der code tut, ist die gleiche Datei drucken.. keine kontinuierliche Veränderung.
if (newdate==date){ ... } else if (newdate!=date){ ... }
Ich denke, das ist, weil es eine Dritte Möglichkeit hier 😉InformationsquelleAutor Prasanth Madhavan | 2010-12-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist, weil Sie fordern
stat()
außerhalb der Schleife.Das Ergebnis von stat() korrekt in diesem moment. Sie benötigen zum Aufruf von stat() wieder jedes mal, wenn Sie wollen, um es zu überprüfen.
InformationsquelleAutor Roddy
Gut, Sie
stat
vor der Schleife. Die info erhalten Sie von Ihrem ursprünglichenstat
nie aktualisiert. Bewegen Sie den Aufrufstat
in diewhile
Schleife.InformationsquelleAutor dennycrane
Wenn Sie auf Linux und schreiben speziell für, die Plattform, die Sie verwenden können, inotify, um Sie zu informieren, wenn sich eine Datei ändert, anstatt ständig polling.
Sehen Mann inotify, um zu sehen, wie Sie zu verwenden.
InformationsquelleAutor CashCow
ja, Sie haben sich zu bewegen, stat-Aufruf in der while-Schleife.
deine while-Schleife sollte so Aussehen
InformationsquelleAutor Sadanand