-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2008-10-02 a las 15:13 +0200, Camaleón escribió:
El 2/10/08, Carlos E. R. escribió:
Pero necesita que el sistema operativo se lo diga. No es office el que va preguntando si alguien lo tiene abierto por ahí, se lo dice el sistema (en el código de error resultante de la funcion open).
Sí, pero no me refiero a éso :-).
Hablo del comportamiento que tiene el programa (que te avisa de que el archivo está abierto por otro usuario y te presenta opciones). Algún componente debe tener la suite del office para gestionar ésto porque otros programas no lo hacen.
Lo que tiene es que se han leido el manual del sistema (o van a la sala de al lado) y hacen uso de la API correctamente. Para una vez que hacen algo bien... Todos los programas pueden hacer lo mismo, lo que pasa es que pasan. Total, quien les manda tener dos usuarios en un ordenador, ¡que se compre otro!
Por ejemplo, si abro una imagen desde un equipo de la red y abro la misma imagen desde otro equipo de la red, no avisa. No sabes que alguien la está editando o que la tiene abierta.
Culpa del programa. De ambos lados. Si cuando abres en el primero el archivo (no me refiero a pinchar con el ratón, sino a llamar a la función open() o la que sea), lo dejas abierto (sin llamar a close()) con el flag de deny_read (o cmo se llame), pues el segundo editor no puede ni abrirlo. Si lo abres en el modo tradicional, esto es, sin especificar modo de compartición se abre sin negarle permiso al segundo. Tengo que leerme en el manual cual es el modo por defecto, pero me apetece una siesta. Luego. Vale, un vistazo rapido. Manual del programador de msdos 5.0. open_share_compatibility (oh) To'quisqui puede abrirlo. open_share_deny_readwrite (10h) nadie más puede abrirlo open_share_deny_write (20h) Los demas pueden abrir para leer, pero no escribir open_share_deny_read (30h) open_share_deny_none (40h) permite a otros programas abrirlo para leer y escribir, pero sin acceso compatible. Traducido: que tienen que mojarse y especificar el modo. ¡Siesta!
En msdos era optativo, en windows no creo.
Prueba dentro de la misma máquina, no por red. Además, depende de si el programa mantiene abierto el fichero o no: un editor de texto puede abrir un fichero y cerrarlo a efectos del sistema, mientras te permite editarlo, trabajando con datos en memoria o archivo temporal. Al final, cuando va a grabarlo, es cuando vuelve a abrirlo (para el sistema). En ese caso no te va a dar colisión.
Y es un comportamiento creo que habitual.
Será habitual, pero no lo bloquea, al menos no de manera predeterminada (es decir, sin configurarlo expresamente). Un mismo archivo de texto abierto por dos clientes de la red, permite a ambos trabajar con ese archivo y los cambios que guarda el último cliente son los que permanecen.
Seguramente este comportamiento sea configurable :-?
Depende del currito que haya hecho el programa, y del soporte que tenga la red a los bloqueos, que no los conozco. Según el manual deben seguir funcionando. La cuestión es la siguiente. Los programas hacen (internamente): 1) abrir archivo 2) leer archivo 3) cerrar archivo 4) ---> ir a edición. Y sé que es así porque así es como lo hacía yo. Bien, pues en el punto 4 cualquier otro programa puede tocarte las narices... el sistema no le va a decir nada, para él tú has dejado el fichero suelto y libre. Es la técnica tradicional de cuando tienes el PC para tí sólo. (Además, el fichero se deja cerrado porque si está abierto y el sistema se cuelga - eso no pasa nunca, ¡tio! - pues te deja el archivo en un estado impredecible... Y si es de texto, es que o lo abres para leer o para escribir, no ambas cosas; abres, lo lees, lo cierras, lo abres, lo grabas, lo cierras). Entonces, si el programador de msdos se upgradea y sigue programando igual con redes y con windows, pues ya la tienes liada... lo abren como ahí arriba, o lo hacen en modo "compatible", y el ultimo que lo grabe gana. ¿Meseentiende? ¿si,no? Pos me voy a sestear. Ta'luego. :-P - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkjk5+8ACgkQtTMYHG2NR9WnhACfVU1TqKvLMkrAtEi/KBXqR9m8 KbQAn0/qB7450ttApMRCRyUHmnoCVQ5c =7EJS -----END PGP SIGNATURE-----