Почему файлов / жестких ссылок с таким же iNode больше, чем показывает счетчик ссылок? - PullRequest
0 голосов
/ 25 августа 2009

Я просмотрел папку на одном томе и извлек список имен файлов, счетчиков ссылок и номеров инодов, используя

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, поэтому любая помощь / указатели будут оценены. Опытный программист, но не в этой среде (хотя учусь так быстро, как могу ....)

1 Ответ

1 голос
/ 26 августа 2009

Вы смотрите на резервные копии Time Machine? Существуют ли жесткие ссылки на каталоги?

Если каталог A содержит каталоги B1 и B2, которые являются жестко связанными, файл с одинаковым индексом будет находиться внутри B1 и B2, но счетчик ссылок может быть один.

...