Descargo de responsabilidad: soy principalmente un desarrollador de Linux/web.¿Alguna vez podremos eliminar un archivo abierto en Windows?
Windows tiene esta característica "agradable" en la que niega el permiso para eliminar cualquier archivo que se mantenga abierto por cualquier proceso. Por lo tanto, si un antivirus ingresa el archivo incorrecto en el momento equivocado, es posible que algún programa aleatorio se comporte mal y posiblemente se bloquee.
¿Estoy en lo cierto? ¿Hay planes para arreglar esto?
¿Alguno de ustedes lo considera aceptable, o, ¿cómo podría parecer una buena idea en ese momento?
Editar:
Funciona de manera muy diferente en Unix, y lo ha sido durante décadas.
A modo de ejemplo:
- proceso 1 se abre foo.txt, para leer o escribir, o ambos, no importa
- proceso 2 borra el archivo
- el archivo se desvincula de la sistema de archivos
- proceso 1 sigue leyendo y/o escribiendo, el archivo aún existe, y puede crecer mientras haya espacio en el disco. Simplemente no es accesible desde otros procesos que aún no tienen un control de archivo.
- cuando el proceso 1 se cierra el archivo, no será accesible desde cualquier lugar
En realidad, un patrón de uso común para los archivos temporales en Unix es:-remove-leer de apertura/cierre y escritura.
En lugar de eliminar un archivo que otro proceso utiliza sin advertencia, lo que definitivamente no hará que el programa se comporte mal y posiblemente falle. Hay programas como unlocker que te permiten cerrar manejadores de archivos, pero no veo cómo es una buena idea eliminar un archivo que está en uso. – IVlad
Pero, si alguien borra un archivo que está utilizando el proceso 1, ¿cómo podría el proceso 1 portarse mal o bloquearse?El archivo todavía está allí, puede leerse o escribirse, simplemente no está disponible si no tiene un identificador de archivo ya abierto. –
Es solo una de las muchas decisiones filosóficas donde las dos plataformas difieren. Ambos métodos tienen sus pros y sus contras, aunque personalmente no encuentro que ninguno de los métodos sea en general mejor o peor que el otro. Cuando se desarrolla para una plataforma, debe conocer sus idiosincrasias y manejarlas de manera adecuada. Si no puede hacer esto y su programa se bloquea, entonces su programa tiene la culpa, no la plataforma. – Luke