2010-06-04 4 views
8

OK : 저는 iPhone OS 응용 프로그램에서 파일 공유를 구현하고 있습니다. 물론 이것은 파일 시스템 모니터링을 의미합니다. 예!kqueue()를 사용하여 디렉토리의 변경 사항을 모니터링하는 최적의 방법은 무엇입니까?

기본적으로 OS는 사용자가 파일을 iTunes의 내 응용 프로그램 섹션으로 조작 할 때 액세스 할 수있는 디렉토리에서 복사 및/또는 삭제합니다. 따라서, 아마도 kqueue()과 같은 효율적인 메커니즘을 통해 디렉토리를 모니터링해야 할 것입니다.

어떻게 파일을 복사했는지 알 수 있도록 이것을 구현합니까? 나는 라인을 따라 생각하고 있었다 :

  • 모니터 kqueue().
  • 이벤트가 발생하면 시간 제한을 시작 (또는 기존 재설정)하십시오.
  • 시간이 초과되면 작업하십시오.

하지만 OS의 발가락 부분을 밟지 않도록하는 더 좋은 방법이 있습니까?

답변

3

이것은 부분적인 대답 일 뿐이지 만 다소 유용 할 수 있습니다.

  1. kqueue 메커니즘은 실제로 앱의 Documents 디렉토리가 수정 될 때 알림을받는 수단으로 작동합니다.

  2. 알림은 디렉토리가 수정되고 파일 복사가 완료되기 직전에 제공됩니다. 나는 이것을 테스트에서 관찰했다.

불행히도, 복사가 완료되면 알림 형식이 없습니다. 적어도, 내가 발견 한 것은 없다.

Apple이 알기를 바랍니다. "iTunes synch"에 대한 알림이 필요합니다. 일반적인 문제인 것처럼 보입니다.

새 파일의 수정 시간이 변경되지 않았는지 확인하는 루프가 작동하지만 대부분 시간 만 작동 할 수 있습니다. 일부 극단적 인 상황에서 iOS는 배경에서 모든 시간이 걸리는 작업을 일시 중지 할 수 있습니다.

특정 파일이 다른 프로세스에서 열려 있는지 확인하는 방법이 있으면 충분합니다.

Geoff