C 如何查看特定路径?
是否可以“监视”特定路径,并让内核在删除/写入/读取/创建该名称的文件或目录时通知我C 如何查看特定路径?,c,freebsd,C,Freebsd,是否可以“监视”特定路径,并让内核在删除/写入/读取/创建该名称的文件或目录时通知我 注意:我正在寻找C语言的答案。我将接受一个用不同语言指向底层实现的答案(如果我能找到C代码)在Linux上,内核支持inotify,它允许监视特定的文件和目录。看起来FreeBSD也有类似的功能,它基于Linux“inotify”接口,名为。(我使用了inotify;但是,我自己没有使用pnotify) inotify不要求您编写内核模块。所有API都可以在用户空间中使用。正确初始化后,应用程序只需使用inot
注意:我正在寻找C语言的答案。我将接受一个用不同语言指向底层实现的答案(如果我能找到C代码)在Linux上,内核支持inotify,它允许监视特定的文件和目录。看起来FreeBSD也有类似的功能,它基于Linux“inotify”接口,名为。(我使用了inotify;但是,我自己没有使用pnotify) inotify不要求您编写内核模块。所有API都可以在用户空间中使用。正确初始化后,应用程序只需使用inotify文件描述符调用
read()
,即可监视文件和/或目录活动。读取事件以结构形式出现:
struct inotify_event
{
int wd; /* Watch descriptor */
uint32_t mask; /* Mask of events */
uint32_t cookie; /* Unique cookie associating related events */
uint32_t len; /* Size of name field */
char name[]; /* Optional null-terminated name */
};
从我对pnotify的了解来看,它非常相似。您应该看看kqueue接口。FreeBSD上不存在inotify
kqueue排在第一位,通常被认为是更好的接口 请参阅:@MeysamTolouee这似乎是我所寻找的以windows为中心的答案。也许这有帮助:在BSD中,kqueue。在linux中,inotify。或者你可以在gio中使用glib的包装器,它也可以使用win32,但有lgpl2许可证。@technosaurus很高兴知道;不幸的是,我仅限于自由软件,但我可以看到glib使用的API。您的链接是SUSE手册页,而不是FreeBSD手册页。这个答案使用了FreeBSD中不存在的API。我认为FreeBSD只是可以选择查看其他项目的手册页。检查下拉列表:它有netbsd、openbsd、多个版本的SUSE等。好的,我想我的答案现在更好了。通知url: