Yanıtlar:
Unix'te tüm normal dosyalar Hardlinks'tir. Bir Unix'teki (ve çoğu (tümü?)) Dosya sistemindeki sabit bağlantılar, adlandırılmış olana referanslardır inode
. inode
Bir referans sayaç var sen, üçüncü, dördüncü, vb bağlantı bir saniye oluşturduğunuzda sayaç 1'dir (normal çalışma biçimi olan) dosyasına bir "bağlantı" olduğunda, sayaç (artmış) her artırılır birer birer zaman. Bir rm
bağlantıyı sildiğinizde ( ), sayaç birer birer azalır (azalır). Bağlantı sayacı 0'a ulaşırsa, dosya sistemi kaldırır inode
ve boşluğu kullanım için uygun olarak işaretler.
Kısacası, son bağlantıyı silmediğiniz sürece dosya kalacaktır.
Edit:
Son bağlantı kaldırılsa bile dosya kalacaktır . Bu, bir dosyada bulunan verilerin güvenliğini sağlama işleminin başka hiçbir işlem için erişilebilir olmadığından biridir. Verileri dosya sisteminden tamamen kaldırmak, yalnızca verinin meta verilerinde 0 bağlantı verilmiş olması ve herhangi bir işlem tarafından kullanılmaması durumunda yapılır.
Bu IMHO, hard-linkleri (ve softlinks'den farkı) anlamanın en kolay yoludur.
unlink
.
/proc
ayrı (sanal) bir dosya sistemidir.
unlink()
bir dosyayı silmek için arama yapmak, 1990'ların ilk yarısında MS-DOS'ta C programlaması ile oynamaya başladığımda beni şaşırtmadı. :)
Test yapmak düşündüğümden daha kolaydı: Bir metin dosyası oluşturdum, sonra zor bir şekilde bağlantı kurdum. Sert bağlantısı siliniyor mu değil o kadar hardlinked dosyayı ve öyle kalıntıları bağlantılıydı dosyayı silin.
Diskinizdeki tüm dosyalar aslında sürücünüzdeki gerçek verilere işaret eder.
bu dosya için bir hardlink yaptığınızda hardlink dosyası, orijinal dosyanın işaret ettiği verilere işaret edecektir.
Bu örnekte olduğu gibi, a.txt, sürücüdeki dosyanın verisine (bayt) işaret ediyordu, hardlink b.txt oluşturulduğunda a.txt'nin neye işaret ettiğini gösterecektir.
bu nedenle bunlardan birinin çıkarılması, diğerinden ayrıldıklarını diğerini etkilemeyecektir.
ANCAK, ikisini de kaldırdığınızda, sistem diskteki verilerin kendisine işaret eden bir dosyası olmadığını görecek, böylece sistem onu boş alan olarak görecek ve istediğinde üzerine yazacaktır.
FILE "A.txt"
aynıdır LINK "B.txt"
tek bir aradım özellikle gibi FILE
ve bir diğer LINK
. Bağlantı gerçekten siyah ok.
unlink()
.