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

时间:2015-11-04 20:42:40

标签: c++ boost c++-standard-library file-access

是否存在具有阻止调用方的函数的库,直到某个文件存在和/或可删除为止? (非常优选地在标准C ++库中或者提升。)

背景

我是编写需要

的单线程应用程序的C ++新手
  1. 在启动时执行一些繁重的计算。
  2. 等待某个输入文件存在(并且可以删除)。
  3. 如果文件包含某条指令,请将其删除并退出。
  4. (Else)处理它,删除它,并生成一个输出文件。
  5. 从第2步开始重复。
  6. 步骤2,3和5(而不仅仅是步骤1和4以及按需调用应用程序)的原因是步骤1涉及一些繁重的处理。

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

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

2 个答案:

答案 0 :(得分:4)

有一个抽象的Asio服务

  • Win32 filemonitoring API
  • Linux上的
  • inotify(还有朋友?)

漂浮在网络上。它还没有被Boost接受,尽管有些讨论会将它包含在Boost Asio(异步IO 的库)中

找到这个,这可能有助于你找到它:

答案 1 :(得分:1)

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