使用kqueue()监视目录中的更改的最佳方法是什么?

mil*_*omi 8 iphone directory macos monitoring kqueue

好的:我正在iPhone OS应用程序中实现文件共享,当然这意味着文件系统监控.好极了!

基本上,当用户将文件操作到iTunes中的应用程序部分时,操作系统会复制和/或删除目录.因此,我需要通过像a这样的有效机制监视目录中的更改kqueue().

我如何实现这一点,以便我知道文件已完成复制?我在思考:

  • 监控kqueue().
  • 在事件中,启动(或重置现有)超时.
  • 超时过后,请继续工作.

但有没有更好的方法来确保我不会踩到操作系统的脚趾?

小智 4

这只是部分答案,但可能有点用。

  1. kqueue 机制确实可以作为应用程序的文档目录被修改时收到通知的一种方式。

  2. 一旦目录被修改并且复制文件完成之前,就会发出通知。我在测试中观察到了这一点。

不幸的是,复制完成后没有任何形式的通知。至少,我没有找到。

我希望苹果能够意识到,“iTunes 同步”完成后需要发出通知,因为这似乎是一个普遍问题。

检查新文件的修改时间是否未更改的循环可能有效,但仅在大多数情况下有效。在某些极端情况下,iOS 可以暂停在后台执行各种耗时的工作。

如果有一种方法可以检查特定文件是否被另一个进程打开,那么这就足够了。

杰夫