files – ¿Qué sucede cuando lee un archivo mientras se sobrescribe?

Pregunta:

Supongamos que leo (cat) un archivo mientras otro proceso está reescribiendo su contenido. ¿Es predecible la salida? ¿Qué pasaría?

Respuesta:

Eso depende de lo que haga el escritor.

Si el escritor sobrescribe el archivo existente, entonces el lector verá el nuevo contenido cuando el escritor supere al lector, si es que lo hace alguna vez. Si el escritor y el lector avanzan a velocidades variables, el lector puede ver contenido antiguo y nuevo alternativamente.

Si el escritor trunca el archivo antes de que comience a escribir, el lector se ejecutará hasta el final del archivo en ese punto.

Si el escritor crea un archivo nuevo y luego mueve el archivo nuevo al nombre anterior, el lector seguirá leyendo el archivo anterior. Si se mueve o elimina un archivo abierto, los procesos que tienen el archivo abierto siguen leyendo desde ese mismo archivo. Si se elimina el archivo, en realidad permanece en el disco (pero no hay forma de abrirlo nuevamente) hasta que el último proceso lo haya cerrado.

Los sistemas Unix tienden a no tener bloqueos obligatorios. Si una aplicación quiere asegurarse de que su componente de escritura y su componente de lectura no se pisoteen mutuamente, depende del desarrollador utilizar el bloqueo adecuado. Hay algunas excepciones en las que un archivo que está abierto por el kernel puede estar protegido contra escritura por aplicaciones de usuario, por ejemplo, una imagen de sistema de archivos montada en bucle o un ejecutable que se está ejecutando en algunas variantes de Unix.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım