Кроссплатформенный наблюдатель файловой системы C++

Я ищу кроссплатформенный наблюдатель файловой системы, похожий на класс FileSystemWatcher в.NET. Так как это для демона / сервиса, я не заинтересован в Qt QFileSystemWatcher. Я действительно хотел бы избежать этого, так как не хочу зависеть от Qt, так как моя программа будет демоном.

Я также видел предложение о включении такого класса в Boost, но, насколько я знаю, такой класс еще не был включен.

Есть ли кроссплатформенный наблюдатель файловой системы C++?

4 ответа

Решение

Qt разделен на модули, поэтому использование этой функции не означает, что вы должны использовать библиотеку GUI.

QFileSystemWatcher находится в QtCore, который не имеет функциональности GUI.

Я не использовал это (я пришел к этому вопросу в поисках альтернатив), но http://code.google.com/p/simplefilewatcher кажется, хороший вариант. В настоящее время он не поддерживается, но соответствующие API, вероятно, довольно стабильны. Я постараюсь не забыть обновить этот ответ, если я использую эту библиотеку.

В качестве альтернативы есть также "Entropia File System Watcher"

https://bitbucket.org/SpartanJ/efsw который является ответвлением простого наблюдателя за файлами.

В настоящее время efsw поддерживает следующие платформы:

Linux через inotify

Windows через порты завершения ввода / вывода

Mac OS X через FSEvents или kqueue

FreeBSD / BSD через kqueue

Независимый от ОС универсальный наблюдатель (опрос диска на предмет моментальных снимков каталогов и их периодическое сравнение)

Если по какой-либо причине какой-либо из бэкэндов не запустится, он вернется к независимой от ОС реализации.

Для полноты картины также стоит упомянуть Poco DirectoryWatcher.

Другие вопросы по тегам