Node 스크립트를 실행 중인데 다음 경로에서 이 오류가 발생합니다.
ENOENT ../../../Library/Application Support/Google/Chrome/RunningChromeVersion
Chrome을 닫으면 오류를 제거할 수 있습니다.
내 인터넷 검색의 대부분은 나에게 다음과 같이 말했습니다.이노엔트종료되지 않는 파일/폴더로 인해 오류가 발생합니다.
그러나 이 경우 폴더는 분명히 존재하며 Chrome이 실행 중이라는 사실과 관련이 있습니다.
파일이 사용 중이더라도 파일을 탐색할 수 있기를 원합니다. 이것이 가능한가?
다른 오류의 대부분은 Apple로 인해 발생하며 저는 Apple 컴퓨터를 사용하고 있습니다.
ENOENT ../../../Library/Containers/com.apple..NowPlayingWidgetContainer/Data/Documents/iChats
답변1
이름이 지정된 항목 RunningChromeVersion
이 존재하지만심볼릭 링크누구의표적존재하지 않는다. Node 스크립트는 링크에 특별한 처리를 제공하지 않으므로 링크를 열려고 할 때 기본 작업은 링크를 따라가는 것입니다.
링크의 대상은 애초에 파일을 가리키도록 의도되지 않았기 때문에 존재하지 않습니다. 일반적으로 파일 이름이 들어가는 '대상' 필드에 관련되지 않은 일부 정보(예: 버전 번호)가 저장된 더미 링크입니다.
예를 들어 Linux에서는 이에 상응하는 내용이 있습니다( l
"유형" 표시 참조).
$ ls -l ~/.config/chromium 총 420만개 ... drwx------ 3명의 중력 사용자 4.0K 5월 14일 09:52 ShaderCache/ 엘rwxrwxrwx 1 grawity 사용자 20 5월 17일 13:38 SingletonCookie-> 18396286875963223082 엘rwxrwxrwx 1 grawity 사용자 12 5월 17일 13:38 SingletonLock-> 서리-453916 엘rwxrwxrwx 1 grawity 사용자 50 5월 17일 13:38 SingletonSocket-> /tmp/.org.chromium.Chromium.7Og2ow/SingletonSocket= drwx------ 3명의 중력 사용자 4.0K 12월 27일 08:02 SSLErrorAssistant/ ...
이는 "잠금 파일"을 생성하는 다소 일반적인 방법입니다. 링크를 원자적으로 생성하는 데는 하나의 syscall만 필요하고(이미 존재하는 경우 실패함) "내용"('대상' 필드)을 읽는 데는 하나의 syscall이 필요하며, 실제 파일은 NFS/SMB/AFS 호환 가능하다고 생각합니다. 이러한 네트워크 파일 시스템에서는 잠금이 제대로 작동하지 않는 경향이 있습니다.
readdir()을 사용하여 디렉토리를 검색하면 각 디렉토리 항목에는 이미 해당 유형에 대한 정보가 있습니다. 예를 들어 Node에서는 다음을 호출할 수 있습니다..isSymbolicLink()
각 readdir 결과에 대해.
경로만 있는 경우 다음과 같은 노드를 사용할 수 있습니다.lstat()
경로가 심볼릭 링크인지 확인하고 그런 식으로 통과하지 않도록 하는 기능입니다( readlink()
원하는 경우 '대상' 필드를 읽을 수도 있습니다).
실제로는추천재귀 파일 검색을 수행할 때 심볼릭 링크를 건너뛰려면 심볼릭 링크를 따라가면 무한 루프에 빠질 수 있습니다(예: dirA/linkB는 ../dirB를 가리키지만 dirB/linkA는 ../dirA를 가리키고 이제 막히게 됩니다).