代码之家  ›  专栏  ›  技术社区  ›  millenomi

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

  •  8
  • millenomi  · 技术社区  · 14 年前

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

    基本上,当用户将文件操作到iTunes中我的应用程序部分时,操作系统会复制和/或删除我可以访问的目录。因此,我需要通过一个有效的机制来监视目录的变化,比如 kqueue() .

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

    • 监控器 kQueLe() .
    • 在事件中,启动(或重置现有)超时。
    • 当超时结束时,开始工作。

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   user430156    14 年前

    这只是一个部分的答案,但可能有些有用。

    1. Kqueue机制确实是一种在修改应用程序的文档目录时得到通知的方法。

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

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

    我希望苹果能意识到“iTunes同步”的通知已经完成了,因为这似乎是一个普遍的问题。

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

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

    杰夫