在基于BSD的系统中,有人知道fcntl函数的F_NOTIFY标志等效吗?
该标志允许您接收有关文件事件的通知
(例如,打开文件,关闭文件,将字节写入文件,从文件读取字节).
该标志在Linux中存在,但在MACOSX(基于BSD的系统)中不存在.
引用Linux man:
File and directory change notification
(dnotify)int fcntl(int fd, int cmd, … /* arg
*/ );F_NOTIFY (long)
(Linux 2.4 onwards) Provide notification when the directory
referred to by fd or any of the files
that it contains is changed.
实际上,任何允许我接收文件事件的API都足够了.
有人知道F_NOTIFY是否存在替代品吗?
目前,我只有一个主意:使用kqueue(),kevent()函数.
解决方法:
没有确切的等价物.带有EVFILT_VNODE事件过滤器的kqueue()
/kevent()
是OS X上的替代品.
请注意,即使在Linux中,F_NOTIFY也会被inotify取代.