Как ждать, пока файл существует (и будет выпущен)?

Есть ли библиотека с функцией, которая блокирует вызывающего, пока определенный файл не существует и / или не может быть удален? (Очень желательно в стандартных библиотеках C ++ или boost.)

Я новичок в C ++, пишу однопоточное приложение, которое должно

  1. Выполните некоторые тяжелые расчеты при запуске.
  2. Подождите, пока определенный входной файл существует (и может быть удален).
  3. Если файл содержит определенную инструкцию, удалите ее и выйдите.
  4. (Иначе) обработать его, удалить его и создать выходной файл.
  5. Повторите с шага 2.

Причина наличия шагов 2,3 и 5 (вместо просто шага 1&4 и вызывая приложение по требованию), заключается в том, что шаг 1 включает в себя некоторую тяжелую обработку.

Я не хочу тратить много процессорного времени на ожидание во время шага 2, но я также не хочу вводить ненужные задержки, опрашивая существование файла нечасто.

Какой правильный подход здесь? (Желательно кроссплатформенность: Windows, Linux, OSX.)

2

Решение

Есть сервис Asio, который абстрагируется от

  • Win32 filemonitoring API
  • inotify в Linux (а друзья?)

плавает в сети. Он еще не был принят в Boost, хотя продолжается обсуждение того, чтобы включить его в Boost Asio (библиотека для асинхронный ввод-вывод)

Нашел это, что может помочь вам найти это:

3

Другие решения

Это определенно зависит от операционной системы (и файловой системы). На Linux конкретно вы могли бы Inotify (7) средства (с родным Linux местный файловые системы, такие как Ext4 или BTRFS).

1

По вопросам рекламы [email protected]