2015-11-04 57 views
1

是否有一个函数库阻塞调用方,直到某个文件存在和/或可删除? (非常优选地在标准的C++库或升压。)如何等待文件存在(并被释放)?

背景

我是一个C++新人编写需要单线程应用到

  1. 执行上启动了一些重的计算。
  2. 等待某个输入文件存在(并且是可删除的)。
  3. 如果文件包含某个指令,请将其删除并退出。
  4. (否则)处理它,删除它,并产生一个输出文件。从第2步

原因

  • 重复用于具有步骤2,3和5(而不是只步骤1 & 4和调用点播应用)是步骤1中涉及到一些重的处理。

    我不想在第2步中花费大量的处理器时间来忙等待,但我也不希望通过轮询文件存在的频率来引入不必要的延迟。

    这里的正确方法是什么? (最好跨平台:Windows,Linux,OSX。)

  • +1

    只是为了它的缘故:http://stackoverflow.com/questions/10164341/cross-platform-c-filesystem-watcher - 不提高或标准librar y(文件系统上没有任何内容),但可能有用。 – Rostislav

    +0

    Re *等待某个输入文件存在(并可删除)*第一部分很简单。尝试打开文件。等一下,如果出现错误,请重试。括号内的部分非常简单。这甚至意味着什么,特别是在跨平台的意义上? –

    回答

    2

    有一个短耳服务抽象了

    • 的Win32 API filemonitoring
    • inotify在Linux(和朋友吗?)

    在网络上四处传播。它没有被接受进入Boost然而,尽管有些讨论是怎么回事升压短耳

    (用于异步IO库)发现这一点,这可能会帮助你找到它,包括它:

    1

    它当然是操作系统(和文件系统)特定的。在Linux上,您可以使用inotify(7)设施(本机Linux 本地文件系统,如Ext4或BTRFS)。

    +0

    谢谢。我希望有一个图书馆能够为我提供OS和FS特定的摘要。我已经编辑了相应的问题。 – Museful

    +0

    为什么你会想象每个操作系统功能都可以用OS和FS中立的方式进行包装? –

    +1

    我只是希望*这个*可以为三个给定的平台(假设“OS&FS中立”意味着OS&FS不变的API--如果我误解了我,则纠正我。) – Museful