Respuestas:
En Unix, todos los archivos normales son enlaces duros. Los enlaces duros en un sistema de archivos Unix (y la mayoría (¿todos?)) Son referencias a lo que se llama un inode
. El inode
tiene un contador de referencia, cuando se tiene un "enlace" para el archivo (que es el modus operandi normal) el contador es 1. Cuando se crea una segunda, tercera, cuarta, etc. enlace, el contador se incrementa (aumento) de cada tiempo por uno. Cuando elimina ( rm
) un enlace, el contador se reduce (reduce) en uno. Si el contador de enlaces llega a 0, el sistema de archivos elimina inode
y marca el espacio como disponible para su uso.
En resumen, mientras no elimine el último enlace, el archivo permanecerá.
Edit:
El archivo permanecerá incluso si se elimina el último enlace . Esta es una de las formas de garantizar que la seguridad de los datos contenidos en un archivo no sea accesible para ningún otro proceso. La eliminación completa de los datos del sistema de archivos solo se realiza si los datos tienen 0 enlaces a ella como se indica en sus metadatos y no está siendo utilizada por ningún proceso.
Este en mi humilde opinión es, con mucho, la forma más fácil de entender los enlaces duros (y su diferencia con los enlaces blandos).
unlink
.
/proc
es un sistema de archivos separado (virtual).
unlink()
para eliminar un archivo me dejó perplejo cuando comencé a jugar con la programación en C en MS-DOS en algún momento de la primera mitad de la década de 1990. :)
La prueba fue más fácil de lo que pensaba: creé un archivo de texto, luego lo vinculé por hardware. Al eliminar el vínculo físico, no se elimina el archivo al que está vinculado y el archivo al que se vinculó permanece donde está.
Todos los archivos en su disco son en realidad punteros a los datos reales en su disco.
cuando crea un enlace rígido para ese archivo, el archivo editado con enlace rígido apuntará a los mismos datos a los que apuntaba el archivo original.
como en este ejemplo, a.txt apuntaba a los datos (bytes) del archivo que está en la unidad, cuando se crea el enlace duro b.txt señalará a lo que a.txt apuntaba.
por lo tanto, eliminar uno de ellos no afectará al otro que están separados el uno del otro.
PERO, cuando elimine ambos, el sistema verá que los datos que están en el disco no tienen ningún archivo que lo señale, por lo que el sistema lo considerará como un espacio libre y lo sobrescribirá cuando lo desee.
FILE "A.txt"
es idéntico a LINK "B.txt"
, particularmente como ha llamado a uno FILE
y al otro a LINK
. El enlace es realmente la flecha negra.
unlink()
.