Equivalente

10/12/2003 - 01:17 por René Ketterer Kleinsteuber | Informe spam
¿De qué forma puedo abrir un archivo en forma exclusiva sin usar
funciones como por ejemplo "_fsopen ó CreateFile?

El problema es que si uso por ejemplo "fstream", "ofstream" ó
"ifstream", no tengo ninguna posibilidad de bloquear el acceso, para que
otros procesos y usuarios no puedan acceder a éste.

Muchas gracias de antemano.

René

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral González
11/12/2003 - 10:56 | Informe spam
Los streams standard de STL (los de la cabecer <fstream> no pemiten hacer lo
que tu necesitas, el estandar de C++ no contempla el acceso exclusivo a
ficheros.

La solución pasa por usar la antigua cabecera <fstream.h> propia de
microsoft, y por tanto sin portabilidad, en esta cabecera existe un flag,
filebuf::sh_none que puede aplicar del siguente modo:

ofstream outPutFile;
outPutFile.open( "FileName", ios::app, filebuf::sh_none );

Un saludo
Rodrigo Corral Gonzalez
Respuesta Responder a este mensaje
#2 René Ketterer Kleinsteuber
11/12/2003 - 13:09 | Informe spam
"Rodrigo Corral González" schrieb im
Newsbeitrag news:
Los streams standard de STL (los de la cabecer <fstream> no pemiten hacer lo
que tu necesitas, el estandar de C++ no contempla el acceso exclusivo a
ficheros.

La solución pasa por usar la antigua cabecera <fstream.h> propia de
microsoft, y por tanto sin portabilidad, en esta cabecera existe un flag,
filebuf::sh_none que puede aplicar del siguente modo:

ofstream outPutFile;
outPutFile.open( "FileName", ios::app, filebuf::sh_none );



Si miras en el código fuente verás que el flag no está programado, así
que no me sirve. De todas maneras encontré una solución, la cual
funciona con MS VC++:

1) Abrir el archivo con la función _fsopen, la cual te permite controlar
el acceso. Esta función te devuelbe un file pointer.

2) Con el file pointer crear un fstream. Por supuesto que esto no es
estándar, pero la implementación de de fstream de Microsoft conoce un
constructor, el cual recibe como parámetro un FILE*.

Lamentablemente la información al repecto no la encuentras en ningún
documento. Así que no te queda otra que estudiar las cabeceras. En
fstream puedes ver que para basic_fstream, basic_ifstream y
basic_ofstream existen constructore, los cuales aceptan como Parameter
un FILE*.

Gracias por tú respuesta.

Saludos

René
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida