Sólo ten cuidado con el cierre de las manijas; es incluso más peligrosa de lo que se podría pensar, porque de manejar reciclaje - si usted cierra el identificador de archivo, y el programa se abre algo más, que el archivo original mango cerró puede ser reutilizado para que "algo más". Y ahora supongo que lo que sucede si el programa sigue, pensando que está trabajando en el archivo (con el mango cerró), cuando en el hecho de que el identificador de archivo es ahora apunta a algo más.
véase Raymond Chen post sobre este tema
Supongamos que un índice de búsqueda de servicio tiene un archivo abierto para la indexación, pero tiene
quedado atascado temporalmente y desea eliminar el archivo, por lo que
(imprudentemente) fuerza el asa cerrada. El índice de búsqueda de servicios abre sus
archivo de registro con el fin de registrar alguna información, y el identificador de la
archivo borrado es reciclado como el identificador para el archivo de registro. La atascado
la operación finalmente se completa, y el índice de búsqueda de servicio, finalmente, se
alrededor del cierre que manejan la había abierto, pero termina sin darse cuenta
cierre el archivo de registro de la manija.
El índice de búsqueda de servicio se abre otra
archivo, por ejemplo un archivo de configuración para escribir por lo que puede actualizar algunos
el estado persistente. El identificador para el archivo de registro recicladas como el
manejar el archivo de configuración. El índice de búsqueda de servicio quiere
registro de cierta información, por lo que escribe en su archivo de registro. Por desgracia, el
registro de identificador de archivo se ha cerrado y el mango reutilizados para su configuración
archivo. La información registrada entra en el archivo de configuración,
corromperla.
Mientras tanto, otro identificador que cierran fue reutilizado
como un mutex de manejar, que se utiliza para evitar que los datos se
dañado. Cuando el archivo original de la manija está cerrado, la exclusión mutua de la manija
es cerrado y las protecciones contra la corrupción de los datos se pierden. El
no funciona el servicio, el más dañado en sus índices convertido.
Eventualmente, alguien nota que el índice es devolver resultados incorrectos.
Y cuando intenta reiniciar el servicio, se produce un error debido a que su
los archivos de configuración han sido dañados.
Informe del problema para el
la empresa que hace el índice de búsqueda de servicio y determinar que
el índice ha sido dañado, el archivo de registro tiene misteriosamente dejó de
el registro y el archivo de configuración se sobrescribe con la basura. Algunos
buenos técnico se le asigna la tarea imposible de averiguar por qué el
servicio corrompe sus índices y archivos de configuración, sin saber que el
fuente de la corrupción es que se obligó a un asa cerrada.