FUSE (Mac OS X에서는 OSXFUSE, Linux에서는 libfuse)를 사용하여 자체 장난감 파일 시스템을 작성하고 있습니다. 로그와 같이 내가 파일 시스템을 마운트 할 때마다, FUSE는 특별한 경로에 getattr
를 호출FUSE가 Mac의 특수 경로에서 getattr을 호출합니다.
[debug] trfs_getattr: called on path=/
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/.hidden
[error] get_entry_attr: no entry at path /.hidden
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/.hidden
[error] get_entry_attr: no entry at path /.hidden
기능 trfs_getattr()
가 struct fuse_operations
에서 getattr()
콜백 내 자신의 구현입니다.
기능 get_entry_attr()
은 파일의 속성을 가져 오는 데 사용되며 해당 경로에서 해당 파일을 찾을 수 없기 때문에 오류를보고합니다.
FUSE가 일부 특수 숨김 파일/디렉토리에서 getattr()
을 자동으로 호출하려고 시도하는 것처럼 보입니다. 이는 Mac OS X에서만 발생합니다. Linux에서는 로그 출력이 정상입니다.
질문 * 특수 파일은 무엇입니까? * 왜 FUSE가 먼저 해당 경로에서 getattr()
을 호출합니까? * Mac OS X에서이 문제를 방지하려면 어떻게해야합니까?
왜 당신이 생각 볼륨이 마운트 될 때 퓨즈가 그것을하고있는 OS가 아니라 그 일이야? 왜 그것을 막고 싶니? 너 왜 신경 쓰냐? 존재하지 않는 파일에 액세스하려는 다른 시도처럼 실패합니다. 확실히, 파일 시스템 구현은이를 처리해야합니다. –