El bloqueo de archivos UNIX es dead-easy: El sistema operativo asume que usted sabe lo que está haciendo y le permite hacer lo que desee:¿Cómo hago que el bloqueo de archivos de Windows sea más parecido al bloqueo de archivos UNIX?
Por ejemplo, si intenta eliminar un archivo que otro proceso ha abierto, el sistema operativo generalmente te permitirá hacerlo. El proceso original aún conserva sus identificadores de archivo hasta que finaliza, momento en el que el sistema de archivos reiniciará silenciosamente los recursos de disco. Sin problemas, así es como me gusta.
Diferentes cosas en Windows: si trato de eliminar un archivo que está usando otro proceso, aparece un error del sistema operativo. El archivo es intocable hasta que el proceso original libera su bloqueo en el archivo. Eso fue genial en los días de un solo usuario de MS-DOS cuando era probable que cualquier proceso de bloqueo estuviera en la misma computadora que contenía los archivos; sin embargo, en una red es una pesadilla:
Considere lo que sucede cuando se cuelga un proceso mientras escribe en un archivo compartido en un servidor de archivos de Windows. Antes de que el archivo pueda eliminarse, debemos ubicar la computadora e identificar el proceso en esa computadora que originalmente abrió el archivo. Solo entonces podemos matar el proceso y eliminar nuestro archivo no deseado.
¡Qué molestia!
¿Hay alguna manera de mejorar esto? Lo que quiero es que el bloqueo de archivos en Windows se comporte como un bloqueo de archivos en UNIX. Quiero que el sistema operativo me deje hacer lo que quiero porque estoy a cargo y sé lo que estoy haciendo ...
... ¿se puede hacer?
Lo dudo seriamente. El comportamiento de Unix donde un programa puede seguir accediendo a un archivo borrado hasta que lo cierra es profundo en el sistema operativo. –
Para mí, bloqueo de archivos significa usar fcntl y LockFileEx. Estás preguntando si tienes permiso para abrir o eliminar un archivo. –