MACOSX(BSD)等效于fcntl()函数的F_NOTIFY标志

时间:2011-03-02 11:46:28

标签: linux macos bsd fcntl

在基于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()函数。

1 个答案:

答案 0 :(得分:5)

没有确切的等价物;带有EVFILT_VNODE事件过滤器的kqueue()/kevent()是OS X的替代品。

请注意,即使在Linux中,F_NOTIFY已被inotify取代。