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

 C Discussion :

Tester si un fichier est déjà ouvert par un autre processus


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Tester si un fichier est déjà ouvert par un autre processus
    Bonjour,

    Voilà tout est dans le titre, j'ai un processus qui va écrire dans un fichier des données
    Un 2ème processus qui va attendre que le fichier existe pour piocher dedans sauf que forcément mon 2ème processus n'attend pas que le 1er ai écrit ses données pour lui même ouvrir EN MEME TEMPS le fichier en question...

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 384
    Points : 23 679
    Points
    23 679
    Par défaut
    Bonjour,

    Ta question est mal posée : apparemment, tu cherches à savoir si un premier processus a créé le fichier initial et y a déposé des données avant de l'ouvrir pour y lire ce qui doit s'y trouver. C'est sensiblement différent de savoir si un autre processus utilise déjà le fichier que tu veux lire, et éventuellement modifier. C'est important car cette dernière notion est un sujet assez récurrent en informatique. Ce sont les file locks (verrous fichiers).

    Pour savoir si un fichier a été créé ou a été mis à jour, en revanche, il s'agit d'autre chose, mais il n'y a malheureusement rien de standard en C pour gérer ce cas. Il s'agit donc de programmation système et cela dépend donc de l'O.S. que tu utilises, chacun proposant son propre dispositif. Sous Linux, par exemple, c'est inotify qui s'occupe de cela.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 427
    Points : 1 119
    Points
    1 119
    Par défaut
    Bonjour,

    Tout dépend de ce que tu veux faire.
    Si tu veux attendre que le premier processus ait fini d'écrire dans le fichier, c'est un cas classique de gestion que l'on retrouve par exemple quand on fait du transfert FTP. Généralement pour garantir que le fichier est bien et correctement transmis, les méthodes que j'ai vues (mais il y en a sûrement d'autres):
    * Inscrire un fichier sémaphore quand ce fichier arrive, tu sais que le fichier de données est en place et complet
    * Nommer le fichier et le renommer après fin d'écriture, il suffit de ne chercher que le fichier avec le nom convenu.

    On pourrait penser à d'autres méthodes par exemple le premier processus bloque le fichier et le second ne pourra y accéder que lorsque le premier processus aura fermé le fichier (en interdisant le partage du fichier)

    Cordialement

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 717
    Points : 31 028
    Points
    31 028
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par acaumes Voir le message
    * Inscrire un fichier sémaphore quand ce fichier arrive, tu sais que le fichier de données est en place et complet
    Salut
    Sous Unix/Linux, les fonctions semxxx() des IPC permettent de gérer de vrais sémaphores (contrôlés par le noyau) ce qui est un poil plus fiable que passer par des fichiers...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [VBA-E] comment tester si un fichier est déjà ouvert?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 25/01/2016, 10h34
  2. Réponses: 7
    Dernier message: 06/05/2014, 09h34
  3. [À télécharger] Tester si un fichier est déjà ouvert
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 1
    Dernier message: 16/08/2013, 01h24
  4. Tester si un fichier est déjà ouvert par un programme tiers
    Par E@gle_One dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 17/04/2008, 11h33
  5. tester si un fichier est déjà ouvert
    Par fredppp dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 21/05/2007, 13h29

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