Warum gibt es mehrere Dateien / Hardlinks mit dem gleichen Inode als die Referenzzähler zeigt?

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

  •  19-09-2019
  •  | 
  •  

Frage

Ich habe einen Ordner auf einem einzigen Band rekursiv, und eine Liste von Dateinamen, Referenz-Zählungen und Inode-Nummern abgerufen wird, mit

NSFileManager attributesOfItemAtPath

und NSDictionary fileSystemFileNumber und objectForKey: NSFileReferenceCount

Aus irgendeinem Grund bin ich Ergebnisse wie eine Referenzzahl von 10 bekommen, aber eine Liste von vielen mehr als 10 Dateien mit dem gleichen Inode-Nummer.

Bemerkenswert ist, dass ich nicht Symlinks in meiner Liste einschließlich, ich bin die Aufnahme nur eine Datei, wenn [dict Dateityp] == NSFileTypeRegular

Irgendwelche Ideen, warum dies der Fall sein könnte?

Edit: @ Peter Hosey, ich schreibe die Inode und Referenzzähler wie folgt:

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"];

Beachten Sie, dass der Grund iNodeNumber und referenceCount etwas anders geschrieben werden, ist, dass [dict] bietet eine direkte (NSUInteger) fileSystemFileNumber get-Methode, während die fileReferenceCount abgerufen werden muß Tasten (nach einer Hilfe, die ich auf NSDictionary finden konnte, )

Beide Eigenschaften des CLMFile Einheit sind Int 64. Von dem, was ich sagen kann, ist NSUInteger der Art abhängig, ob mit einem 32 oder 64-Bit-Modus, aber [NSNumber numberWithUnsignedInteger] akzeptiert NSUInteger als Argument, so nehme ich an würde sie beschäftigt mit der Nummer richtig in jedem Modus.

Ich kann nicht sehen, wo in Activity Monitor sagt, ob es 32/64 Bit. Ich würde davon ausgehen, was auch immer die Standardeinstellung für XCode 3.1.3 Projekte sind.

Es ist möglich, dass ich hier etwas fehlt bin, da ich relativ neu bin auf Mac / Obj-C / XCode / Kakao, so dass jede Hilfe / Zeiger würde geschätzt. Erfahrene Programmierer, aber nicht in dieser Umgebung (obwohl kann so schnell, wie ich lernen ....)

War es hilfreich?

Lösung

Suchen Sie auf Time Machine-Backups? Gibt es Verzeichnis harte Links beteiligt?

Wenn Verzeichnis A enthält Verzeichnisse B1 und B2, die hardlinked sind, wird eine Datei mit dem gleichen Inode wäre sowohl innerhalb als B1 und B2, doch der Schiedsrichter den Zählwert eins sein könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top