Horodatage de fichier en c++
je veux vérifier un fichier pour voir si sa été changé et si elle l'est, puis de le charger à nouveau.. pour cela, j'ai commencé avec le code suivant qui est de m'nulle part...
#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;
}
}
}
tout le code n'est d'imprimer même fichier.. pas de changement continu.
if (newdate==date){ ... } else if (newdate!=date){ ... }
Je pense que c'est parce qu'il y a une troisième possibilité ici 😉
InformationsquelleAutor Prasanth Madhavan | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous êtes d'appel
stat()
en dehors de la boucle.Le résultat de stat() est correct à ce moment-là. vous devez appeler stat() à chaque fois que vous voulez vérifier.
Bien, vous
stat
avant la boucle. Les informations que vous obtenir votre initialestat
n'est jamais mis à jour. Déplacer l'appel àstat
dans lewhile
boucle.Si vous êtes sur Linux et écrit spécialement pour cette plate-forme, vous pouvez utiliser inotify pour vous informer lorsqu'un fichier changements plutôt que de continuellement interrogation il.
Voir l'homme inotify pour voir comment les utiliser.
oui, vous avez à déplacer stat appel dans la boucle while.
votre boucle while devrait ressembler à ceci