Эквивалент MACOSX (BSD) для флага F_NOTIFY для функции fcntl()

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

Цитата пользователя линукс:

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

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

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

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

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


person Vlad    schedule 02.03.2011    source источник


Ответы (1)


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

Обратите внимание, что даже в Linux вместо F_NOTIFY используется уведомлять.

person mark4o    schedule 02.03.2011