문제

단일 볼륨으로 폴더를 재발하고 사용하여 파일 이름, 참조 차량 및 inode 번호 목록을 검색했습니다.

nsfileManager attributeofitematpath

및 nsDictionary filesystemFilenumber 및 ObjectForKey : NSFilEREFERENCECOUNT

어떤 이유로 든 참조 카운트 10과 같은 결과를 얻을 수 있지만 동일한 inode 번호를 가진 10 개 이상의 파일 목록이 나타납니다.

주목할만한 점은 내 목록에 Symlinks를 포함하지 않으며 [dict filetype] == nsfiletyperegular 일 때만 파일 만 녹화하고 있습니다.

이것이 왜 그런지에 대한 아이디어가 있습니까?

편집 : @Peter Hosey, 나는 inode and Reference count를 다음과 같이 쓰고 있습니다.

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 get-method를 제공하는 반면, filereferenceCount는 키를 사용하여 검색해야하기 때문입니다 (nsdictionary에서 찾을 수있는 도움에 따라).

Clmfile 엔티티의 두 속성은 int 64입니다. 내가 말할 수있는 바에 따르면, Nsuinteger의 유형은 32 또는 64 비트 모드를 실행하는지 여부에 따라 달라 지지만 [nsnumber numbumwithUnSignEdInteger]는 nsuinteger를 논쟁으로 받아 들일 것입니다. 어느 모드에서도 올바르게.

활동 모니터에서 어디에 있는지 알 수 없습니다. 32/64 비트인지 여부가 표시됩니다. 나는 Xcode 3.1.3 프로젝트의 기본값이 무엇이든간에 가정합니다.

Mac/OBJ-C/Xcode/Cocoa를 비교적 처음으로 사용하기 때문에 여기서 무언가를 놓치게 할 수 있으므로 도움/포인터에게 감사 할 것입니다. 경험이 풍부한 프로그래머이지만이 환경에서는 그렇지 않습니다 (최대한 빨리 학습하지만 ...)

도움이 되었습니까?

해결책

타임 머신 백업을보고 있습니까? 디렉토리 하드 링크가 관련되어 있습니까?

디렉토리 A에 하드 링크 된 디렉토리 B1 및 B2가 포함 된 경우, 동일한 inode가있는 파일이 B1과 B2 모두에 있지만 심판 수는 하나 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top