[ Linux ] inotifywatch 如何正确地监听重命名或移动事件?

2022-09-04 13:26:29 +08:00
 yodhcn
在重命名或移动一个文件 /文件夹时,inotifywatch 监听的 move 事件会输出两条 log
MOVED_FROM a.txt
MOVED_TO a_rename.txt

Q1: 但 MOVED_FROM 与 MOVED_TO 一定是成对的吗?并发移动被监听文件夹下的文件,会不会出现下面这种先移动的文件后完成的情况?
MOVED_FROM a.txt
MOVED_FROM b.txt
MOVED_TO b_rename.txt
MOVED_TO a_rename.txt

Q2: 还是说 MOVED_FROM 与 MOVED_TO 就像字面描述的那样,是成功移动后才输出连续的两条 log ?
Q3: 如果是 Q2 的这种情况,能不能让 inotifywatch 在监听到 move 事件时,只输出一条 "MOVED_FROM a.txt, MOVED_TO a_rename.txt" ?
941 次点击
所在节点    程序员
2 条回复
q1angch0u
2022-09-04 15:13:09 +08:00
int inotify_add_watch(int fd, const char *pathname, uint32_t mask); 的 mask 可以为 IN_MOVED_TO 或者 IN_MOVED_FROM ,所以可以只监听 MOVED_TO 事件。
mind3x
2022-09-05 00:54:02 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/877600

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX