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

MFC Discussion :

problème d'acces concurentiel à un fichier


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 47
    Points : 52
    Points
    52
    Par défaut problème d'acces concurentiel à un fichier
    J'ai développé un service Windows à l'aide de Visual C++ (mais codé en C).
    Quand le service démarre il ouvre un fichier log comme ceci:
    stream = freopen(nomfichier,"a+",stdout);
    De cette façon mon flux de sortie est redirigé vers le fichier log grâce à la fonction fflush.
    Quand mon service s'arrête il ferme mon fichier log : fclose(stream)
    En gros ça donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    ....
    //démarrage du service
    ....
    stream = freopen(nomfichier,"a+",stdout);
    printf("Connexion établie\n");
    ...
    printf("titi\n");
    ...
    fflush(stream);
    ...
    printf("toto\n");
    ...
    fflush(stream);
    ...
     
    fclose(stream) 
    //fin du service
    Je souhaite que mon fichier log se fasse copier par un programme de copie. (Histoire de faire un backup). C'est un programme qui copie tout ce qu'il y a dans le répertoire. Je ne peux pas influer dessus.

    Mon soucis c'est que quand l'utilitaire copie mon fichier log alors que mon service écrit dedans (au moment du fflush) mon service se plante.
    Auriez vous une idée pour que je puisse tester si mon fichier est en train de se faire copier, ou bien un test pour savoir si je peux écrire dedans...

    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    Essaye de voir si en testant avec la fonction _access ça ne résous pas ton pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if( (_access( nomfichier, 2 )) != -1 )
             printf( "File ACCESS.C has write permission\n" );
    voir doc MSDN

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 47
    Points : 52
    Points
    52
    Par défaut
    Merci ta solution à réglé mon problème.

    Voici la modification de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    .... 
    //démarrage du service 
    .... 
    ouverture:
    stream = freopen(nomfichier,"a+",stdout);
    if( stream == NULL ) goto ouverture;
     
    printf("Connexion établie\n"); 
    ... 
    printf("titi\n"); 
    ... 
     if( (_access( nomfichier, 2 )) != -1 ) fflush(stream);
    ... 
    printf("toto\n"); 
    ... 
     if( (_access( nomfichier, 2 )) != -1 ) fflush(stream);
    ... 
     
    fclose(stream) 
    //fin du service
    En espérant que ça puisse dépaner quelqu'un d'autre à l'avenir.


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

Discussions similaires

  1. [SP-2007] Problème d'accès sur des fichiers
    Par johanaquatique dans le forum SharePoint
    Réponses: 2
    Dernier message: 14/10/2010, 08h37
  2. Réponses: 8
    Dernier message: 26/12/2009, 15h18
  3. Problème d'accès concurrent à un fichier
    Par soso78 dans le forum VB.NET
    Réponses: 3
    Dernier message: 12/03/2009, 18h31
  4. problème d'accés sur des fichiers partagés
    Par prefna dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/08/2006, 16h05

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