En Windows, ¿permanecen los bloqueos de archivos después de que se finaliza un proceso mediante taskkill?

En Windows, ¿permanecen los bloqueos de archivos después de que se finaliza un proceso mediante taskkill?

No estamos hablando de reiniciar aquí (similar a otra pregunta). Esta pregunta distingue la forma diferente en que Windows maneja los bloqueos de archivos existentes en una tarea final frente a la forma en que responde a un apagado/reinicio.

Si yomatar a la fuerzaun programa, ¿los archivos que ha bloqueado seguirán bloqueados o los bloqueos también se liberarán cuando el proceso finalice?

Por forzar la eliminación, me refiero a usar el comando 'taskkill' o 'finalizar árbol de procesos' en el administrador de tareas.

Para aclarar aún más, no estoy hablando de un proceso que deja un archivo de bloqueo auxiliar residente no eliminado, como lo hace MS Word. Me refiero al estado de un bloqueo de archivo exclusivo o compartido real.

¿Taskkill libera un bloqueo de archivos? ¿O el bloqueo permanece puesto hasta el momento en que se reinicia o se realiza una acción del usuario administrador dentro de la consola de administración de la computadora?

Esto es lo que puedo confirmar: eliminar un proceso de 16 bits que coloca un bloqueo exclusivo

Esto utiliza un pequeño programa de consola que coloca un bloqueo exclusivo en un archivo en el mismo directorio local. El programa permanece ejecutándose hasta que el usuario presiona una tecla y luego desbloqueará el archivo. Esto es lo que sucede:

  • Si se inicia en el símbolo del sistema y se cierra en el administrador de tareas, libera el bloqueo. El proceso a eliminar es el cmd.exe específico que inició el programa. Matarlo libera el bloqueo.

  • Si se inicia haciendo clic y luego se cierra cerrando la ventana, el bloqueo se libera.

  • Sin embargo, si se inicia haciendo clic y luego eliminando conhost.exe en el administrador de tareas, no libera el bloqueo. En este caso, tampoco hay cmd.exe porque se hizo clic en él. Entonces, la única forma de eliminarlo es eliminando el conhost.exe o ntvdm.exe en el que se está ejecutando. El bloqueo permanece en su lugar hasta después del reinicio.

  • Si se inicia haciendo clic y luego eliminando ntvdm.exe en el administrador de tareas, libera el bloqueo.

  • En ningún momento el bloqueo exclusivo impide que se elimine el archivo. Sin embargo, Windows no permite copiar el archivo en el explorador mientras el bloqueo esté activado.

Por lo tanto, hay dos comportamientos diferentes dependiendo de si la tarea se inicia a través del indicador cmd o haciendo clic y eliminando el subsistema conhost o ntvdm. Por supuesto, eliminar el subsistema ntvdm.exe también elimina cualquier otro proceso que se esté ejecutando en el subproceso ntvdm.

Respuesta1

Sí, los bloqueos permanecen, pero no se puede predecir cuándo el sistema operativo los liberará. Verbloquear archivo()yBloquearArchivoEx():

Si un proceso termina con una parte de un archivo bloqueada o cierra un archivo que tiene bloqueos pendientes, el sistema operativo desbloquea los bloqueos. Sin embargo, el tiempo que le toma al sistema operativo desbloquear estos bloqueos depende de los recursos disponibles del sistema. Por lo tanto, se recomienda que su proceso desbloquee explícitamente todos los archivos que ha bloqueado cuando finalice. Si no se hace esto, es posible que se deniegue el acceso a estos archivos si el sistema operativo aún no los ha desbloqueado.

información relacionada