Risposte:
In Unix tutti i file normali sono Hardlink. Hardlink in un filesystem Unix (e la maggior parte (tutti?)) Sono riferimenti a ciò che viene chiamato un inode. Il inodeha un contatore di riferimento, quando si dispone di un "link" al file (che è il normale modus operandi) il contatore è 1. Quando si crea una seconda, terza, quarta, ecc collegamento, il contatore viene incrementato (aumentato) ogni tempo di uno. Quando si elimina ( rm) un collegamento, il contatore viene diminuito (ridotto) di uno. Se il contatore dei collegamenti raggiunge 0, il filesystem rimuove inodee contrassegna lo spazio come disponibile per l'uso.
In breve, finché non si cancella l'ultimo collegamento, il file rimarrà.
Edit:Il file rimarrà anche se l'ultimo collegamento viene rimosso . Questo è uno dei modi per garantire che la sicurezza dei dati contenuti in un file non sia accessibile a nessun altro processo. La rimozione completa dei dati dal filesystem viene eseguita solo se i dati hanno 0 collegamenti ad esso come indicato nei suoi metadati e non vengono utilizzati da alcun processo.
Questo IMHO è di gran lunga il modo più semplice per comprendere gli hard link (e la sua differenza dai softlink).
unlinked.
/procè un filesystem separato (virtuale).
unlink()per eliminare un file mi ha lasciato perplesso quando ho iniziato a giocare con la programmazione C su MS-DOS qualche tempo fa nella prima metà degli anni '90. :)
Il test è stato più semplice di quanto pensassi: ho creato un file di testo, quindi fortemente collegato ad esso. L'eliminazione del collegamento reale non comporta l' eliminazione del file a cui è collegato e il file a cui è stato collegato rimane dove si trova.
tutti i file nel tuo disco sono in realtà puntatori ai dati reali sul tuo disco.

quando crei un hardlink per quel file, il file hardlink indicherà gli stessi dati a cui puntava il file originale.
come in questo esempio, a.txt puntava ai dati (byte) del file che si trovano nell'unità, quando viene creato il collegamento reale b.txt indicherà ciò a cui puntava a.txt.
così rimuovendone uno non influirà sull'altro a cui sono separati gli uni dagli altri.
MA, quando li rimuovete entrambi, il sistema vedrà che i dati presenti sul disco non hanno file che lo puntano, quindi il sistema lo considererà come uno spazio libero e lo sovrascriverà quando lo desidera.
FILE "A.txt"è identico a LINK "B.txt", in particolare come hai chiamato uno a FILEe l'altro a LINK. Il link è davvero la freccia nera.
unlink().