Почему файлов/жестких ссылок с одним и тем же iNode больше, чем показывает счетчик ссылок?

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

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Атрибуты NSFileManagerOfItemAtPath

и 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)fileSystemFileNumber метод получения, тогда как fileReferenceCount необходимо получить с помощью ключей (согласно любой помощи, которую я мог найти в NSDictionary)

Оба свойства сущности CLMFile имеют значение Int 64.Насколько я могу судить, тип NSUInteger зависит от того, работает ли 32- или 64-битный режим, но [NSNumber numberWithUnsignedInteger] принимает NSUInteger в качестве аргумента, поэтому я предполагаю, что он правильно обрабатывает число в любом режиме.

Я не вижу, где в Мониторе активности написано, является ли он 32/64-битным.Я бы предположил, что для проектов XCode 3.1.3 используются значения по умолчанию.

Возможно, я что-то здесь упускаю, так как я относительно новичок в Mac/Obj-C/XCode/Cocoa, поэтому буду благодарен за любую помощь/указания.Опытный программист, но не в этой среде (хотя учусь так быстро, как могу....)

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top