是否可以“监视”特定路径并让内核在删除/写入/读取/创建/等等名称的文件或目录时通知我?
注意:我正在寻找C中的答案。我会接受一个答案,指出我使用不同语言的基础实现(假设我能找到C代码)
答案 0 :(得分:0)
在Linux上,内核支持inotify
,它允许监视特定的文件和目录。对于名为pnotify
的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来看,它非常相似。
答案 1 :(得分:0)
您应该查看kqueue界面。在FreeBSD上不存在inotify。
kqueue排在第一位,通常被认为是一个更好的界面。