3

有人知道基于 BSD 的系统中 fcntl 函数的 F_NOTIFY 标志的等效项吗?此标志允许您接收有关文件事件的通知(例如文件打开、文件关闭、写入文件的字节、从文件读取的字节)。该标志存在于 Linux 中,但不存在于 MACOSX(基于 BSD 的系统)中。

来自 linux man 的引用:

文件和目录更改通知 (dnotify)

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

F_NOTIFY (long) (Linux 2.4 以上) 当 fd 引用的目录或其包含的任何文件发生更改时提供通知。

实际上,任何允许我接收文件事件的 API 对我来说都足够了。

有人知道 F_NOTIFY 是否存在任何替代品吗?这时候我只有一个想法:使用kqueue()、kevent()函数。

4

1 回答 1

5

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

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

于 2011-03-02T18:17:58.860 回答