| [ windows ] in KIDS 글 쓴 이(By): belami (- 커피 -) 날 짜 (Date): 1999년 8월 19일 목요일 오전 04시 59분 31초 제 목(Title): Re: [Q] File 생성시 발생하는 Event?? 가장 쉽고 포터빌리티가 높은 방법은 stat() 콜을 사용하는 것입니다. 디렉토리 변경 시각을 사용해서 변경이 되었는지 체크한 후 무언가 변경되면 디렉토리 스캔에 들어가는 겁니다. 이것으로 무조건 스캔하던 프로그램에 비해 100배 이상 빨라집니다. 그런데 NT는 디폴트로 디렉토리 갱신 시각이 아마도 갱신이 안되죠? 어쩌나... 저기 숨어있는 옵션을 켜야겠네요. for NT, UNIX 다른 트릭으로는 디렉토리 별 stamp 파일을 만들고 그 스탬프 파일의 갱신 시각을 이용하는 것입니다. 스탬프 갱신의 오버헤드가 생기지만 스탬프 갱신의 오버헤드는 디렉토리 스캔의 오버헤드에 비하면 1/100도 안됩니다. 코드가 좀 지저분해지겠군요. for NT, UNIX, DOS 사용 가능한 것으로는 Write Event를 모니터링하면 됩니다. WaitForSingleObject(), FindFirstChangeNotification(), FindNextChangeNotification()을 사용하면 됩니다. 이것은 앞의 stat콜을 사용하는 것보다 훨씬 더 빠릅니다. 디렉토리 개수만큼 어레이를 잡고 FindFirstChangeNotification을 이용해 핸들을 저장한 후 WaitForSingleObject를 써서 이벤트를 기다리면 됩니다. for NT |