Perché ci sono più file / hardlinks con lo stesso iNode che gli spettacoli di conteggio di riferimento?

StackOverflow https://stackoverflow.com/questions/1329491

  •  19-09-2019
  •  | 
  •  

Domanda

Ho ricorsivo una cartella su un unico volume, e recuperati un elenco di nomi di file, di riferimento-conti e numeri di inode, usando

NSFileManager attributesOfItemAtPath

e NSDictionary fileSystemFileNumber e objectForKey: NSFileReferenceCount

Per qualche motivo sto ottenendo risultati come ad esempio un conteggio di riferimento di 10, ma un elenco di molti di più di 10 file con lo stesso numero di inode.

Da notare è che io non sono compresi i collegamenti simbolici nella mia lista, sto solo la registrazione di un file quando [dict TipoFile] == NSFileTypeRegular

Tutte le idee perché questo potrebbe essere il caso?

Modifica: @Peter Hosey, sto scrivendo il conteggio iNode e di riferimento come segue:

CLMFileManagedObj *clmf;
clmf = (CLMFileManagedObj *)[NSEntityDescription insertNewObjectForEntityForName:@"CLMFile" inManagedObjectContext:moc];

NSUInteger fsfn = [dict fileSystemFileNumber];
[clmf setValue:[NSNumber numberWithUnsignedInteger:fsfn] forKey:@"iNodeNumber"];
[clmf setValue:(NSNumber*)[dict objectForKey:NSFileReferenceCount] forKey:@"referenceCount"];

Si noti che la ragione iNodeNumber e referenceCount vengono scritti in modo leggermente diverso è che [dict] offre un get-metodo (NSUInteger) fileSystemFileNumber diretta, mentre il fileReferenceCount ha bisogno di essere recuperati utilizzando i tasti (secondo qualsiasi aiuto ho potuto trovare su NSDictionary )

Entrambe le proprietà dell'entità CLMFile sono Int 64. Da quello che posso dire, il tipo di NSUInteger dipende dal fatto che l'esecuzione in modalità a 32 o 64 bit, ma [NSNumber numberWithUnsignedInteger] accetta NSUInteger come argomento, quindi mi piacerebbe assumere si tratta con il numero correttamente in entrambe le modalità.

Non riesco a vedere dove nel Activity Monitor si dice che si tratti di 32/64 bit. Mi piacerebbe pensare qualunque sia il valore predefinito per XCode 3.1.3 progetti.

E 'possibile che mi manca qualcosa qui, come io sono relativamente nuovo per Mac / Obj-C / XCode / cacao, quindi ogni aiuto / puntatori sarebbe apprezzato. programmatore esperto, ma non in questo ambiente (anche se l'apprendimento più veloce che posso ....)

È stato utile?

Soluzione

Stai guardando backup di Time Machine? Ci sono collegamenti fisici directory coinvolti?

Se la directory contiene una directory B1 e B2, che sono un collegamento fisico, un file con lo stesso inode sarebbe all'interno sia B1 e B2, ma il conteggio ref potrebbe essere uno.

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