从inotify_event中检索完整路径名

bsd*_*bsd 7 c linux inotify

inotify_event结构如下所示:

struct inotify_event {
int      wd;       /* Watch descriptor */
uint32_t mask;     /* Mask of events */
uint32_t cookie;   /* Unique cookie associating related
                      events (for rename(2)) */
uint32_t len;      /* Size of name field */
char     name[];   /* Optional null-terminated name */
Run Code Online (Sandbox Code Playgroud)

};

名称部分仅存储文件名(不是文件的路径).我们如何从inotify_event结构中获取完全限定的路径,或者我必须将自己的结构包装在它周围?

编辑:我等待事件大约2秒,然后一次处理.我维护一个事件队列.我的问题是我是否只能从inotify_event结构中获取我的文件的完整路径?

每秒事件的数量很大.

ugo*_*ren 5

有两种选择:

  1. 你在看文件.您已将其名称传递给inotify_add_watch,并获得了一个监视描述符.如果您收到事件,则可以通过监视描述符找出该文件.

  2. 你正在看一个目录.同样,您已将目录名称传递给 inotify_add_watch,并且可以根据监视ID找到它的名称.现在inotify_event.name包含文件名.连接这两个,你就完成了.