¿Por qué hay más archivos / enlaces duros con el mismo iNode de que los programas de cómputo de referencia?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

He recursed una carpeta en un solo volumen, y recuperado una lista de nombres de archivo, de referencia recuentos y números de inodo, utilizando

NSFileManager attributesOfItemAtPath

y NSDictionary fileSystemFileNumber y objectForKey: NSFileReferenceCount

Por alguna razón estoy consiguiendo resultados como un contador de referencia de 10, pero una lista de muchos más de 10 archivos con el mismo número de inodo.

Es de destacar es que no estoy incluyendo enlaces simbólicos en mi lista, sólo estoy grabando un archivo cuando [dict fileType] == NSFileTypeRegular

Cualquier idea por qué esto podría ser el caso?

Editar: @Peter Hosey, estoy escribiendo el nodo-i y referencia recuento de la siguiente manera:

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

Tenga en cuenta que la razón iNodeNumber y referenceCount se escriben de forma ligeramente diferente es que [dict] ofrece una (NSUInteger) fileSystemFileNumber conseguir-método directo, mientras que el fileReferenceCount necesita ser recuperado mediante las teclas (de acuerdo con cualquier ayuda que pude encontrar en NSDictionary )

Las dos propiedades de la entidad CLMFile son Int 64. De lo que puedo decir, el tipo de NSUInteger depende de si se ejecuta el modo de 32 o 64 bits, pero [NSNumber numberWithUnsignedInteger] acepta NSUInteger como el argumento, así que yo asuma que se ocupa con el número correctamente en cualquiera de los modos.

No puedo ver donde en el monitor de la actividad que dice si se trata de 32/64 bits. Me asumir cualquiera que sea el predeterminado para XCode 3.1.3 proyectos son.

Es posible que me falta algo aquí, como estoy relativamente nuevo en Mac / Obj-C / XCode / Cacao, por lo que cualquier ayuda / punteros sería apreciada. programador experimentado, pero no en este entorno (aunque aprender tan rápido como pueda ....)

¿Fue útil?

Solución

¿Usted está mirando copias de seguridad Time Machine? ¿Hay enlaces duros directorio involucrados?

Si el directorio contiene directorios Un B1 y B2 que se hardlinked, un archivo con el mismo inodo a ser de interior tanto B1 y B2, sin embargo, el número de referencia podría ser uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top