Что оптимальный путь состоит в том, чтобы наблюдать изменения в каталоге с kqueue ()?

Хорошо: я реализую Совместный доступ к файлам в приложении iPhone OS, и конечно это означает контроль файловой системы. Yay!

В основном ОС копирует и/или удаляет от, и до каталога я могу получить доступ, когда пользователь управляет файлами в раздел моего приложения в iTunes. Таким образом я должен контролировать каталог для изменений, по-видимому, с помощью эффективного механизма как a kqueue().

Как я реализую это так, чтобы я знал, что файлы закончили копировать? Я думал вроде:

  • Монитор с kqueue().
  • В событии запустите (или сбросьте существующий), тайм-аут.
  • Когда тайм-аут протечет, действительно работать.

но есть ли лучший способ сделать его, который гарантирует, что я не переступаю через пальцы ног ОС?

8
задан millenomi 4 June 2010 в 08:34
поделиться

1 ответ

Это только частичный ответ, но может быть в некоторой степени полезным.

  1. Механизм kqueue действительно работает как средство уведомления об изменении каталога документов приложения.

  2. Уведомление приходит, как только каталог изменяется и до завершения копирования файла. Я наблюдал это при тестировании.

К сожалению, форма уведомления о завершении копирования отсутствует. По крайней мере, ничего из того, что я не нашел.

Я надеюсь, что Apple осознает необходимость уведомления о «синхронизации iTunes», потому что это, похоже, общая проблема.

Цикл, проверяющий, не изменяется ли время модификации нового файла, может работать, но только большую часть времени. В некоторых экстремальных обстоятельствах iOS может приостановить работу, чтобы выполнить все виды трудоемкой работы в фоновом режиме.

Если есть способ проверить, открыт ли конкретный файл другим процессом, этого будет достаточно.

Джефф

3
ответ дан 6 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: