Эквивалент MACOSX (BSD) для флага F_NOTIFY для функции fcntl () - PullRequest
3 голосов
/ 02 марта 2011

Кто-нибудь знает эквивалент для флага F_NOTIFY для функции fcntl в системе на основе BSD?Этот флаг позволяет вам получать уведомления о событиях файла (например, файл открыт, файл закрыт, байты записаны в файл, байты прочитаны из файла).Этот флаг существует в Linux, но не существует в MACOSX (система на основе BSD).

Цитата из linux man:

Уведомление об изменении файла и каталога (уведомление)

int fcntl (int fd, int cmd, ... / * arg */);

F_NOTIFY (long) (Linux 2.4 и более поздние версии) Обеспечивает уведомление при изменении каталога, на который ссылается fd или любой из содержащихся в нем файлов.

На самом деле мне достаточно любого API, который позволяет мне получать файловые события.

Кто-нибудь знает, существует ли какая-либо замена для F_NOTIFY?В настоящее время у меня есть только одна идея: использовать функции kqueue (), kevent ().

1 Ответ

5 голосов
/ 02 марта 2011

Точного эквивалента нет;kqueue() / kevent() с фильтром событий EVFILT_VNODE является заменой в OS X.

Обратите внимание, что даже в Linux F_NOTIFY был заменен на inotify .

...