如何等待文件存在(并被释放)?

How to wait for a file to exist (and be released)?

是否有一个库具有阻止调用者直到某个文件存在的功能 and/or 是可删除的? (最好是在标准 C++ 库或 boost 中。)

背景

我是一个 C++ 新手,正在编写一个需要

的单线程应用程序
  1. 在启动时执行一些繁重的计算。
  2. 等待某个输入文件存在(并且可以删除)。
  3. 如果文件中包含某条指令,则删除并退出。
  4. (否则)对其进行处理、删除并生成输出文件。
  5. 从第 2 步开始重复。

进行步骤 2、3 和 5(而不只是步骤 1 和 4 并按需调用应用程序)的原因是步骤 1 涉及一些繁重的处理。

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

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

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

有一个 Asio 服务抽象了

  • Win32 文件监控API
  • inotify Linux(和朋友?)

在网络上四处游荡。它尚未被 Boost 接受,尽管一些讨论正在将它包含在 Boost Asio 中(异步 IO 的库)

找到这个,这可能会帮助您找到它: