系统相关
首页 > 系统相关> > linux-相当于fcntl()函数的F_NOTIFY标志的MACOSX(BSD)

linux-相当于fcntl()函数的F_NOTIFY标志的MACOSX(BSD)

作者:互联网

在基于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取代.

标签:bsd,macos,fcntl,linux
来源: https://codeday.me/bug/20191023/1913213.html