inotify 不会在文件修改时触发通知

2024-01-05

我一直在调整这个例子here http://www.ibm.com/developerworks/linux/library/l-ubuntu-inotify/index.html使其反复监视文件的“修改”。我的代码是here http://pastebin.com/tK83Fx5X。在我的测试中,inotify 通知仅在文件第一次“修改”时触发(即touch编辑)。对文件的任何后续修改都不会导致触发任何通知。stat显示“修改”时间已更改。此外,修改代码以删除手表并在每次通知触发时重新添加(即移动inotify_add_watch and inotify_rm_watch位于while(1)循环在我的sample http://pastebin.com/tK83Fx5X)并没有帮助解决这个问题。

我想知道这里是否有人可以帮助解决我可能做错的事情。另外,虽然我添加了一个手表IN_ALL_EVENTS,我真的只关心IN_MODIFY事件。不确定这是否有什么区别。

另外,这个用例不起作用吗?我应该改变观看目录的方法吗?请指教。

TIA.

编辑1:正如所指出的themel https://stackoverflow.com/a/15231268/391113,处理i需要一些修复。然而,即使修复版本也不会触发后续文件系统“事件”的通知。此外,在目录而不是文件上添加监视会表现出类似的非确定性行为。

编辑2:我想要这个asio + inotify 示例 http://pastebin.com/v7HEabjv基于这个答案 https://stackoverflow.com/a/12274214/391113上班。不幸的是,这个例子对我来说根本不起作用。任何帮助将非常感激。 TIA。


主题修复后,在我的测试中,您的代码在观看目录时工作正常。在观看文件时,event->len为零,并且您的代码将忽略通知。

随着测试event->len删除和所有event->name取而代之file_path在 printf 语句中,在查看文件时它也可以正常工作。

PS:刚刚注意到你提到touch.

touch发送以下事件:

IN_OPEN
IN_ATTRIB
IN_CLOSE_WRITE

没有 IN_MODIFY

另外,不要通过编辑来测试修改vim正如我刚才所做的那样 - 它会删除文件,同时打乱工作副本和交换,从而删除手表。pico works.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

inotify 不会在文件修改时触发通知 的相关文章

随机推荐