주어진 디렉토리가 (직접 또는 간접적으로) 파일이 수정 될 때 코드에 알리고 싶습니다. "수정 된"이란 말은 파일의 내용이 변경되거나 이름이 변경되거나 삭제 될 때마다 코드에 알림을 보내려고한다는 뜻입니다. 또는 새 파일이 추가 된 경우. 내 응용 프로그램에는 수천 개의 파일이있을 수 있습니다.Mac OS X의 파일 레벨 파일 시스템 변경 알림
나는 FSEvents로 보였지만, 그 기술 개요는 말한다, 부분적으로 :
빼앗아해야 할 중요한 점은 통지의 단위가 디렉토리 레벨에 있다는 것입니다. 디렉토리의 어떤 내용이 변경되었음을 알려주지 만 변경된 내용은 알려주지 않습니다.
또한 말한다 :
파일 시스템 이벤트 API도 때 특정 파일 변경을 찾기 위해 설계되지 않았습니다. 이러한 목적을 위해 큐 큐 메커니즘이 더 적절합니다.
그러나 주어진 파일에서 kqueue를 사용하려면 파일 설명자를 얻기 위해 파일을 열어야합니다. 수천 개의 파일 설명자를 관리하는 것은 비실용적입니다 (어쨌든 최대 허용 가능한 파일 설명자 수를 초과 할 수도 있습니다).
Windows에서는 궁금한 점이있어서 ReadDirectoryChangesW()
기능을 사용할 수 있으며 원하는대로 정확하게 처리 할 수 있습니다.
그래서 Mac OS X에서 내가 원하는 것을 어떻게 할 수 있습니까? 또는 다른 방법을 묻습니다. 사용자 공간에서 Mac OS X 용 ReadDirectoryChangesW()
에 해당하는 글을 쓰려면 어떻게해야할까요? (매우 효율적입니까?)
나는 일반적으로 Windows 프로그래밍을 좋아하지 않으며 Mac/Linux 프로그래밍을 선호합니다. 분명히 Windows에서하는 것이 더 쉬운 적어도 한 가지가 있다는 것이 기괴한 것 같습니다. –
아, Windows에서 할 일이 많습니다. Cocoa를 사용하여 SOAP에 대해 이야기 해보십시오. NSArray는 좋지만 때로는 C# 스타일 제네릭을 매우 환영 할 수 있습니다. Mac은 ASP.NET과 거의 비슷합니다 (WebObjects를보고 있습니다). 나는 코코아를 사랑한다. 지금까지 내가 만난 최고의 프레임 워크입니다. 그러나 Windows보다 Mac의 개발자가 모든 것이 더 좋다고 생각하는 사람은 두 가지 모두에서별로 발전하지 못했습니다. 이런 식으로 zfs라는 거룩한 성배를 기다리고 있습니다. 이런 종류의 물건을 더 쉽고 빠르게 만들 수 있습니다. 언젠가 ... (마이크로 소프트도 winfs에 대한 꿈을 가지고 있습니다 ...) –
문제는 당신이 Mac 프로그래밍으로 리눅스 프로그래밍을 모으고 있다는 것입니다. 이것은 inotifywait으로 Linux에서 매우 쉽게 할 수 있습니다. – MarkovCh1