IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Problème de date de création de fichier


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Points : 24
    Points
    24
    Par défaut Problème de date de création de fichier
    Bonjour,

    Je travaille actuellement sur une petite routine de rotation de log en C++ sous Windows.
    Je rencontre des incohérences sur la date de création des fichiers de log dans le cas suivant :

    1 - fichier 'toto.log' présent sur disque avec une date de création à hier
    2 - suppression ou déplacement du fichier 'toto.log' (pour la rotation des log)
    3 - création d'un nouveau fichier vierge 'toto.log'

    Si l'on observe pas une pause minimum entre le point 2 et le point 3 (15s semble marcher correctement), le nouveau fichier créé garde la date de création de l'ancien !

    J'ai essayer avec la lib C classique stat(), avec FindFirstFile(), puis avec GetFileInformationByHandle(), dans tous les cas la date de création retourné est fausse.
    La doc MSDN indique pour FindFirstFile : "Note: In rare cases, file information on NTFS file systems may not be current at the time you call this function. To be assured of getting the current file information, call the GetFileInformationByHandle function". Mais GetFileInformationByHandle ne marche pas mieux dans ce cas.

    Enfin, j'ai pu également reproduire le 'bug' avec un simple explorateur de fichier.

    Pire, testé avec explorateur (manip à faire en moins d'une 10aine de secondes) :
    1 - supprimer un fichier 'toto.log' avec date de création huier
    2 - creer un fichier 'titi.log', inspecter la date de création : ok
    3 - renommer 'titi.log' en 'toto.log' => la date de création repasse à hier !

    Y a t'il un appel système a faire pour forcer la mise à jour du filesystem ? Car bloquer mon process 15s pour faire tourner les logs n'est pas des plus élégant !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Avez-vous utilisé l'handler retourné par FindFirstFile ... lors de l'appel à GetFileInformationByHandle ? Faut pas.
    L'utilisation de "FlushFileBuffers" peut peut-être régler ces problèmes.

    Pourquoi gérer cela? Des librairies comme Log4C n'existent pas ?

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Avez-vous utilisé l'handler retourné par FindFirstFile ... lors de l'appel à GetFileInformationByHandle ? Faut pas.
    L'utilisation de "FlushFileBuffers" peut peut-être régler ces problèmes.

    Pourquoi gérer cela? Des librairies comme Log4C n'existent pas ?
    Tout d'abord, non, je n'ai pas utilisé le handle de FindFirstFile pour l'appel à GetFileInformationByHandle.

    Finalement, la nuit portant conseil, j'ai trouvé une solution spécifique à ce problème. Après le déplacement du fichier, je créé le nouveau fichier et je force la date de création avec SystemTimeToFileTime().

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossible de copier la date de création du fichier source
    Par azerazerazer dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/11/2007, 20h13
  2. Recopie de fichiers :date de création du fichier perdue
    Par mugwump dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2007, 16h17
  3. Problème de précision sur date de création des fichiers
    Par Bruno Orsier dans le forum Delphi
    Réponses: 2
    Dernier message: 07/06/2007, 14h26
  4. Date de création de fichiers
    Par bov13 dans le forum VBScript
    Réponses: 27
    Dernier message: 19/09/2006, 10h00
  5. Réponses: 3
    Dernier message: 26/02/2006, 23h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo