我怎样才能看到特定的路径?

时间:2014-05-17 05:25:43

标签: c freebsd

是否可以“监视”特定路径并让内核在删除/写入/读取/创建/等等名称的文件或目录时通知我?

注意:我正在寻找C中的答案。我会接受一个答案,指出我使用不同语言的基础实现(假设我能找到C代码)

2 个答案:

答案 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排在第一位,通常被认为是一个更好的界面。