在基于BSD的系统中,是否有人知道fcntl函数的F_NOTIFY标志的等价物? 此标志允许您接收有关文件事件的通知 (例如打开文件,关闭文件,写入文件的字节,从文件读取的字节)。 此标志存在于Linux中,但在MACOSX(基于BSD的系统)中不存在。
引用linux man:
文件和目录更改通知 (dnotify)
int fcntl(int fd,int cmd,... / * arg * /);
F_NOTIFY(长) (Linux 2.4以上)提供目录时的通知 由fd或任何文件引用 它包含的内容已更改。
实际上任何允许我接收文件事件的API对我来说都足够了。
有人知道F_NOTIFY是否有替代品? 这时我只有一个想法:使用kqueue(),kevent()函数。
答案 0 :(得分:5)
没有确切的等价物;带有EVFILT_VNODE
事件过滤器的kqueue()
/kevent()
是OS X的替代品。
请注意,即使在Linux中,F_NOTIFY已被inotify取代。