Я просмотрел папку на одном томе и извлек список имен файлов, счетчиков ссылок и номеров инодов, используя
NSFileManager attributeOfItemAtPath
и NSDictionary fileSystemFileNumber и objectForKey: NSFileReferenceCount
По какой-то причине я получаю результаты, такие как счетчик ссылок на 10, но список из более чем 10 файлов с одинаковым номером iNode.
Следует отметить, что я не включаю SymLinks в свой список, я только записываю файл, когда [dict fileType] == NSFileTypeRegular
Есть идеи, почему это так?
Редактировать: @Peter Hosey, я пишу iNode и счетчик ссылок следующим образом:
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"];
Обратите внимание, что причина того, что iNodeNumber и referenceCount пишутся немного по-разному, заключается в том, что [dict] предлагает прямой (NSUInteger) метод getSystemFileNumber для getS, тогда как fileReferenceCount должен извлекаться с использованием ключей (согласно любой помощи, которую я мог найти в NSDictionary )
Оба свойства объекта CLMFile имеют тип Int 64. Из того, что я могу сказать, тип NSUInteger зависит от того, работает ли 32- или 64-разрядный режим, но [NSNumber numberWithUnsignedInteger] принимает NSUInteger в качестве аргумента, поэтому я предполагаю, что он имеет дело с номером правильно в любом режиме.
Я не вижу, где в Activity Monitor указано, является ли он 32/64 битным. Я бы предположил, что по умолчанию для проектов XCode 3.1.3.
Возможно, я что-то здесь упускаю, так как я относительно новичок в Mac / Obj-C / XCode / Cocoa, поэтому любая помощь / указатели будут оценены. Опытный программист, но не в этой среде (хотя учусь так быстро, как могу ....)