Ouverture fichier avec option de "partage"

Ouverture fichier avec option de "partage" - C++ - Programmation

Marsh Posté le 18-08-2005 à 11:11:00    

Bonjour,
 
Je cherche à ouvrir un fichier en lecture mais en le verrouillant afin qu'il ne soit pas accessible en écriture par un autre process le temps du traitement :
 

Code :
  1. ifstream ifs( szFile, ios::in, filebuf::sh_none);


 
et là j'ai une erreur :
Ctl.cpp(753) : error C2039: 'sh_none' : is not a member of 'basic_filebuf<char,struct std::char_traits<char> >'
Ctl.cpp(753) : error C2065: 'sh_none' : undeclared identifier
 
J'utilise VC6 SP5, et je n'ai pas le choix ;)
J'ai comme l'impression que la STL inclue dans Visual n'est pas top, en regardant les includes je ne  trouve effectivement pas trace d'un quelconque paramètre sh_none ou autre sh_xxx d'ailleurs.
Pourtant la doc MSDN en fait bien mention, et chose bizarre c'est qu'à l'écriture, la complétion automatique de visual m'a bien proposé ce paramètre ...
 
Une idée ? ou bien dois-je utiliser _sopen à la place ?
 
Merci.
 
 

Reply

Marsh Posté le 18-08-2005 à 11:11:00   

Reply

Marsh Posté le 18-08-2005 à 11:40:23    

tu peux installer une autre STL à la place, il me semble que celle dispo sur le site de SGI fonctionnait très bien, d'ailleurs [:petrus75] sinon, je ne me suis jamais penché sur ce genre de problème, donc ... bon courage

Reply

Marsh Posté le 18-08-2005 à 15:26:26    

C'est une idée effectivement, mais j'avoue avoir un peu peur que ça foute le bins dans les includes ...
 
J'ai essayé avec _sopen(), mais en fait j'ai le même souci avec cette STL, le constructeur ifstream n'accepte pas le paramètre int du descripteur de fichier initialisé par _sopen ...

Reply

Marsh Posté le 18-08-2005 à 16:44:28    

pour changer de STL, c'est pas trop compliqué, en fait : il suffit de rajouter le chemin vers la nouvelle STL dans tes répertoires d'includes ... Pense à le mettre tout en haut de la liste pour que ce soit la nouvelle STL qui soit utilisée en priorité.
 
je suis surpris que tu en viennes à utiliser des fonctions commençant par un underscore, normalement, elles n'ont pas pour but d'être appelée directement, il me semble.

Reply

Marsh Posté le 18-08-2005 à 17:29:51    

Et si tu ouvres un fstream, que tu n'utilises qu'en lecture ?


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

Marsh Posté le 18-08-2005 à 18:43:26    

theShOcKwAvE : vi, j'y ai pensé après, je vais essayé ;)
 pour le _sopen(), j'avoue que je n'en sais rien, c'est documenté dans les MSDN ...
 
HelloWorld : ce n'est pas identique à un ifstream ?
Je vais regardé si ça lock le fichier, mais je n'y crois pas trop ..
Merci.


Message édité par cricri_ le 18-08-2005 à 18:44:00
Reply

Marsh Posté le 18-08-2005 à 23:29:32    

fstream = ifstream + ofstream. Il est ouvert en écriture aussi. Pour le lock, ça dépend de l'OS je crois...

Reply

Marsh Posté le 19-08-2005 à 15:55:07    

J'ai essayé avec fstream et c'est pareil.
 
J'ai voulu testé avec la STL de SGI mais il n'y a pas l'air d'y avoir les stream, ai-je loupé un truc ?

Reply

Marsh Posté le 19-08-2005 à 16:15:32    

Les stream ne font pas partie de la STL, mais de la SL.


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

Marsh Posté le 21-08-2005 à 12:51:01    

Bon, donc c'est pas gagné mon histoire ...

Reply

Sujets relatifs:

Leave a Replay

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