운영 체제가 새 파일이 생성되는시기를 알려줄 수 있습니까?
-
03-07-2019 - |
문제
디렉토리를 때때로 스캔하는 대신 새 파일이 특정 디렉토리에서 작성되는시기를 알고 싶습니다.
운영 체제가 내 프로그램에 새 파일이 만들어 졌다고 말할 수있는 방법이 있음을 이해합니다. 어떻게 작동합니까?
언급 한 바와 같이, 이것은 유사점이 있습니다C/C ++의 파일/디렉토리 변경에 대한 알림을받는 방법, 이상적으로는 posix를 사용합니다.
해결책
어떤 OS에 따라 다릅니다.
Windows에서는 기본 API가 될 것입니다 디렉토리 변경 알림.
태그에 Linux를 언급하기 때문에 이것은 다음과 같습니다. Inotify API.
10.5 기준으로 OS X 답변에 추가하려면 FSEVENTS API.
다른 팁
Linux에서 확인하십시오 Inotify.
C/C ++의 파일/디렉토리 변경에 대한 알림을받는 방법, 이상적으로는 posix를 사용합니다.
또는 stackoverflow에서 inotify를 검색하십시오. 많은 아이디어를 얻을 수 있습니다.
가족 모든 unix에서 일관된 파일 관찰 인터페이스를 제공합니다. Linux에서 백엔드 데몬은 다음으로 대체 될 수 있습니다. 집 없는 아이, 그러나 FAM과 연결된 프로그램은 Gamin과 잘 어울릴 것입니다. (무대 뒤에서 FAM은 폴링을 사용하고 있으며 Gamin은 Inotify 또는 Dnotify 또는 Kqueue를 사용하고있을 수 있지만 구현에 대해 걱정할 필요는 없습니다.)
OS X.5가 있습니다 fsevents, 지정된 파일 및 디렉토리 대신 전체 시스템을 모니터링하지만 귀하의 요구를 충족시킬 수 있다는 점에서 매우 다릅니다.
Windows에서는 참조하십시오 찾기 (첫 번째 | Next | Close) Changenotification 또는 ReadDirectoryChanges.
FileSystemWatcher는 답변이며 재귀 적으로 작동합니다.
예가 있습니다 여기 (FileSystemWatcher 검색)
Mac OS X의 경우이 기능은 Spotlight API의 일부입니다.
Windows에서 .net을 사용하여 (Linux/Mono에 대해서는 확실하지 않음) FilessytemWatcher를 사용하여 새 파일을보고 이벤트가 생성 될 때 이벤트를 제기 할 수 있습니다.
MSDN에서 :
FileSystemWatcher를 사용하여 지정된 디렉토리의 변경 사항을 확인하십시오. 지정된 디렉토리의 파일 및 하위 디렉토리의 변경 사항을 볼 수 있습니다. 로컬 컴퓨터, 네트워크 드라이브 또는 원격 컴퓨터에서 파일을 볼 수있는 구성 요소를 만들 수 있습니다.
Windows API는 파일 시스템을 모니터링하기위한 시설을 제공합니다. 여기에 예가 있습니다. http://msdn.microsoft.com/en-us/library/aa365261%28vs.85%29.aspx