Domanda

Ho una differenza tra le dimensioni del file e lo spazio su disco utilizzato (dimensione totale del file è ancora più che le dimensioni del disco). Suppongo perché ci sono molti hard link esistono (ai componenti WinSxS) in Windows 7 / Vista. Ma come faccio a livello di codice distinguere hard link da file reali in Windows 7?

È stato utile?

Soluzione

Non è possibile, perché tutti i file sono hard link. No davvero. Un file è solo un hard link ad un blocco di dati - un elenco in una directory. (Forse si link simbolici significa? È possono distinguere quelli ...)

Utilizzare i metodi incorporate di Windows prevede il calcolo lo spazio utilizzato al posto.

EDIT: Riferimento (enfasi il mio)

  

Il collegamento stessa è solo una voce di directory , e non hanno un descrittore di protezione. Pertanto, quando si modifica il descrittore di protezione di un hard link, è un cambiamento il descrittore di protezione del file sottostante, e tutti gli hard link che puntano a file permettere l'accesso di nuova specificato.

Altri suggerimenti

non possono distinguono hard link da "file reali". La voce di directory per un "vero" file è solo un altro hard link. Forse volevi dire un link simbolico.

POSIX ha una funzione stat (chiamato _stat in Windows) in grado di rilevare collegamenti multipli allo stesso file, che avranno lo stesso numero "inode".

GetFileInformationByHandle () e controllare il restituita BY_HANDLE_FILE_INFORMATION nNumberOfLinks membro per un valore> 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top