Уведомление об изменении файловой системы на уровне файлов в Mac OS X

Я хочу, чтобы мой код был уведомлен, когда любой файл в (прямо или косвенно) данной директории был изменен. От "модифицированный»Я имею в виду, я хочу, чтобы мой код был уведомлен всякий раз, когда файл 'содержимое изменено, этопереименован илиs удалено; или если новый файл добавлен. Для моего приложения могут быть тысячи файлов.

Я выглядел как FSEvents, но его Обзор технологий говорит, частично:

Важно отметить, что детализация уведомлений находится на уровне каталога. Он говорит вам только, что что-то в каталоге изменилось, но не говорит вам, что изменилось.

Это также говорит:

API событий файловой системы также не предназначен для обнаружения изменений конкретного файла. Для таких целей механизм kqueues является более подходящим.

Однако, чтобы использовать kqueue для данного файла, нужно открыть файл, чтобы получить дескриптор файла. Это'нецелесообразно управлять тысячами файловых дескрипторов (и в любом случае, вероятно, превысит максимально допустимое количество открытых файловых дескрипторов).

Любопытно, что под Windows я могу использоватьReadDirectoryChangesW() функция, и она делает именно то, что я хочу.

Так как же делать то, что я хочу под Mac OS X? Или спросил другой путь: как можно написать эквивалентReadDirectoryChangesW() для Mac OS X в пользовательском пространстве (и делать это очень эффективно)?

Ответы на вопрос(4)

Ваш ответ на вопрос