Proteger l'acces a un fichier

Proteger l'acces a un fichier - C++ - Programmation

Marsh Posté le 20-05-2005 à 17:27:58    

Deux ordi en reseaux windows 2000 et Xp pro
si je demarrre un programme qui ouvre un fichier sur l'ordi 1
je voudrais empecher a un autre programme sur l'ordi 2 d'acceder au meme fichier tant que celui-ci est ouvert par le programme sur l'ordi 1
 
En fait cela revient a gerer l'acces concurentiel comme dans une base de donnees
 
Comment faire cela en c++ ?

Reply

Marsh Posté le 20-05-2005 à 17:27:58   

Reply

Marsh Posté le 20-05-2005 à 19:16:35    

Salut,
Tu peux créer un fichier lock, si c'est toi qui développe les deux programmes.
Edit: Tu n'as plus qu'à tester l'existence de ce fichier et ne pas ouvrir dans ce cas.


Message édité par IrmatDen le 20-05-2005 à 19:17:58
Reply

Marsh Posté le 20-05-2005 à 19:31:47    

IrmatDen a écrit :

Salut,
Tu peux créer un fichier lock, si c'est toi qui développe les deux programmes.
Edit: Tu n'as plus qu'à tester l'existence de ce fichier et ne pas ouvrir dans ce cas.


oui c moi qui developpe mais c quoi un fichier lock ?

Reply

Marsh Posté le 20-05-2005 à 21:48:15    

Et si tu l'ouvre en lecture + écriture (fstream) ça suffit pas ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 20-05-2005 à 22:08:16    

HelloWorld a écrit :

Et si tu l'ouvre en lecture + écriture (fstream) ça suffit pas ?


non car je veux ne pas pouvoir ecrire dedans si il est deja ouvert en ecriture par un autre programme

Reply

Marsh Posté le 20-05-2005 à 23:31:04    

Un fichier lock, c'est rien de bien compliqué (de la façon dont je le conçois, faut voir avec les pro après).
 
Admettons que le fichier dont l'accès doit être protégé se nomme db.bin . Lorsque l'une des applications essaye d'ouvrir ce fichier, elle vérifie si un fichier nommé db.bin.lock existe. S'il n'existe pas, elle créée ce fichier au même endroit que le fichier que tu essayes d'ouvrir (ça impose que tu ais l'accés en écriture cependant), sinon, tu refuses la lecture.
Ce fichier peut-être vide ou servir à stocker des informations sur la partie du fichier qui est verrouillé en lecture et/ou en écriture, par exemple. De cette façon tu as un mécanisme de verrouillage qui m'a l'air un peu extensible.

Reply

Marsh Posté le 21-05-2005 à 00:03:56    

IrmatDen a écrit :

Un fichier lock, c'est rien de bien compliqué (de la façon dont je le conçois, faut voir avec les pro après).
 
Admettons que le fichier dont l'accès doit être protégé se nomme db.bin . Lorsque l'une des applications essaye d'ouvrir ce fichier, elle vérifie si un fichier nommé db.bin.lock existe. S'il n'existe pas, elle créée ce fichier au même endroit que le fichier que tu essayes d'ouvrir (ça impose que tu ais l'accés en écriture cependant), sinon, tu refuses la lecture.
Ce fichier peut-être vide ou servir à stocker des informations sur la partie du fichier qui est verrouillé en lecture et/ou en écriture, par exemple. De cette façon tu as un mécanisme de verrouillage qui m'a l'air un peu extensible.


 
merci les 2 applications auront acces total en lecture/ecriture donc ca me semble facile a implementer
merci car je regarder du coté des semaphores mais sa me semble trop complexe pour proteger l'acces a l'eciture de moins d'une dizaine de fichier

Reply

Marsh Posté le 21-05-2005 à 00:11:57    

Tu as essayé d'utiliser l'API Win32 directement ? D'après MSDN (http://msdn.microsoft.com/library/ [...] _files.asp), utiliser CreateFile avec un "ShareMode" de 0 doit interdire tout partage...

Reply

Marsh Posté le 21-05-2005 à 00:14:30    

dividee a écrit :

Tu as essayé d'utiliser l'API Win32 directement ? D'après MSDN (http://msdn.microsoft.com/library/ [...] _files.asp), utiliser CreateFile avec un "ShareMode" de 0 doit interdire tout partage...


 
merci aussi je vais y jeter un oeil

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed