Accès multiples à un fichier en C++sous window XP
Dernière réponse : dans Programmation
Bonjour,
Habitué de linux, et je dois développer un petit utilitaire sous windows XP qui permet de lire un fichier alors qu'il est ouvert en lecture/écriture par un autre process. Je m'explique :
- un programme 1.exe qui m'est imposé et que je ne peux pas modifier écrit en continu des données binaires dans un fichier 1.txt
- je veux faire un programme 2.exe qui lit toutes les 15 s si certaines données sont présentes dans 1.txt.
Lorsque 1.exe est lancé, impossible d'accéder à 1.txt en lecture, ni de copier ce fichier dans un fichier temporaire le temps de le faire lire par 2.exe. Linux le permet, lui !
J'ai trouvé un petit utiliaire (unlocker, http://www.clubic.com/telecharger-fiche20237-unlocker.h...) qui permet de faire une copie, mais je souhaiterais pouvoir le faire sans utiliser de programme extérieur.
Merci pour votre aide.
Habitué de linux, et je dois développer un petit utilitaire sous windows XP qui permet de lire un fichier alors qu'il est ouvert en lecture/écriture par un autre process. Je m'explique :
- un programme 1.exe qui m'est imposé et que je ne peux pas modifier écrit en continu des données binaires dans un fichier 1.txt
- je veux faire un programme 2.exe qui lit toutes les 15 s si certaines données sont présentes dans 1.txt.
Lorsque 1.exe est lancé, impossible d'accéder à 1.txt en lecture, ni de copier ce fichier dans un fichier temporaire le temps de le faire lire par 2.exe. Linux le permet, lui !
J'ai trouvé un petit utiliaire (unlocker, http://www.clubic.com/telecharger-fiche20237-unlocker.h...) qui permet de faire une copie, mais je souhaiterais pouvoir le faire sans utiliser de programme extérieur.
Merci pour votre aide.
Autres pages sur : acces multiples fichier window
Lassé par la pub ? Créez un compte
Ah oui, je n'avais pas bien lu.
Du coup, c'est problématique puisque l'OS ajoute les verrous. Tu peux essayer sur une partition FAT32, mais le problème devrait persister.
Je vois juste le service Volume Shadow Copy, qui a été mis en place dans l'OS pour permettre de faire un backup en bloquant les écritures et permettant la lecture des fichiers verrouillés.
Je ne l'ai jamais utilisé, mais je ne vois que cette possibilité propre (je mets évidemment de côtés les hook système).
Bon courage.
http://msdn.microsoft.com/en-us/library/aa381508%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa384589%28VS.85%29.aspx
Du coup, c'est problématique puisque l'OS ajoute les verrous. Tu peux essayer sur une partition FAT32, mais le problème devrait persister.
Je vois juste le service Volume Shadow Copy, qui a été mis en place dans l'OS pour permettre de faire un backup en bloquant les écritures et permettant la lecture des fichiers verrouillés.
Je ne l'ai jamais utilisé, mais je ne vois que cette possibilité propre (je mets évidemment de côtés les hook système).
Bon courage.
http://msdn.microsoft.com/en-us/library/aa381508%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa384589%28VS.85%29.aspx
Merci.
Effectivement, même chose avec une partition FAT. Cela semble assez compliqué, je vais me plonger dans le VSC. On peut accéder directement en lecture à la copie fantôme sans avoir à le rercopier (pour gagner du temps
)?
C'est quoi un hook système... ?
Autrement, je me demandais s'il existait un soft qui permet d'installer un système de fichier virtuel dans lequel 1.exe enregistre, mais qui traite le fichier différemment d'un fichier disque. Une sorte de redirection de sortie, transparente pour le programme 1.exe.
Effectivement, même chose avec une partition FAT. Cela semble assez compliqué, je vais me plonger dans le VSC. On peut accéder directement en lecture à la copie fantôme sans avoir à le rercopier (pour gagner du temps
)? C'est quoi un hook système... ?
Autrement, je me demandais s'il existait un soft qui permet d'installer un système de fichier virtuel dans lequel 1.exe enregistre, mais qui traite le fichier différemment d'un fichier disque. Une sorte de redirection de sortie, transparente pour le programme 1.exe.
essaye quand même de copier le fichier avant d'exploiter, non pas le fichier d'origine, mais sa copie.
Une fois exploité, tu supprime le fichier de travail.
L'OS n'empeche pas (il me semble) de recopier un fichier déjà ouvert par un autre soft!
Sinon, un hook système me parait chaud dans ton cas de figure.
Une fois exploité, tu supprime le fichier de travail.
L'OS n'empeche pas (il me semble) de recopier un fichier déjà ouvert par un autre soft!
Sinon, un hook système me parait chaud dans ton cas de figure.
J'ai essayé de copier le fichier en cours d'écriture, mais Windows ne le permet pas. Je crois me souvenir de mes cours d'OS que c'est effectivement un désavantage de Windows que n'ont pas les OS unix. D'où l'idée d'enregistrer dans une partition gérée par un système unix (accès par réseau ou autre...) et de faire une lecture par le même moyen. Comment faire tourner un réseau sur une même machine avec 2 OS différents ?
J'ai laissé tombé le hook système, c'est plus adapté à des évènements souris, clavier, ...
J'ai laissé tombé le hook système, c'est plus adapté à des évènements souris, clavier, ...
La solution que tu proposes CRicky me semble la plus prometteuse parce qu'elle va marcher, je n'en doute pas.
Elle ne me satisfait pas complètement parce qu'elle implique un temps de traitement qui augmente avec la taille du fichier. Je souhaite faire du temps réel : pendant que 1.exe enregistre (à une cadence de 75 ms), 2.exe doit traiter le flux de données toutes les 10 s pour indiquer lorsque une condition particulière sur ces données est remplie. Si le temps d'attente pour obtenir la condition est de 3 heures, le fichier d'échange a le temps de grossir... et le temps de traitement de 2.exe va devenir pénalisant s'il faut le recopier en totalité toutes les 10 s.
C'est pour cela que je chercher encore une solution alternative qui permet de gérer un flux de taille constante...
Elle ne me satisfait pas complètement parce qu'elle implique un temps de traitement qui augmente avec la taille du fichier. Je souhaite faire du temps réel : pendant que 1.exe enregistre (à une cadence de 75 ms), 2.exe doit traiter le flux de données toutes les 10 s pour indiquer lorsque une condition particulière sur ces données est remplie. Si le temps d'attente pour obtenir la condition est de 3 heures, le fichier d'échange a le temps de grossir... et le temps de traitement de 2.exe va devenir pénalisant s'il faut le recopier en totalité toutes les 10 s.
C'est pour cela que je chercher encore une solution alternative qui permet de gérer un flux de taille constante...
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forumhelp ! windows xp : problème de refus d'accès au fichier temp
- SolutionsAcces a window live comment debloquer msn
- ForumMultiples problèmes au démarrage de Windows XP
- SolutionsJe ne peux pas lire un fichier avec extension wmv sous window xp
- SolutionsComment protéger mes fichiers dans un ordinateur à multiples utilisateurs?
- ForumAcces au fichier du serveur 2008
- ForumComment retrouver un fichier excel perdu sur window xp
- SolutionsProblème d'ouverture de fichier avec pspad sous windows 7
- SolutionsRéseau non identifié pas d'accès internet windows 7
- Voir plus