gpt4 book ai didi

c++ - inotify 不在文件修改时触发通知

转载 作者:IT王子 更新时间:2023-10-29 00:26:18 25 4
gpt4 key购买 nike

我一直在调整示例 here使其反复监视文件的“修改”。我的密码是 here .在我的测试中,inotify 通知仅在文件第一次“修改”(即 touch)时触发。对该文件的任何后续修改都不会导致触发任何通知。 stat 显示“修改”时间已更改。此外,修改代码以删除 watch 并在每次触发通知时重新添加(即移动 inotify_add_watchinotify_rm_watchwhile(1) 在我的 sample 中循环)没有帮助解决这个问题。

我想知道这里是否有人可以帮助解决我可能做错的事情。此外,虽然我添加了一个监视 IN_ALL_EVENTS 的事件,但我实际上只关心 IN_MODIFY 事件。不确定这是否有任何区别。

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

TIA。

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

编辑 2:我想得到这个 asio + inotify example基于 this answer去工作。不幸的是,这个例子对我根本不起作用。任何帮助将非常感激。 TIA。

最佳答案

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

删除 event->len 的测试并将所有 event->name 替换为 printf 语句中的 file_path,它工作正常在观看文件时也是如此。

PS:刚注意到你提到了touch

touch 发送以下事件:

IN_OPEN
IN_ATTRIB
IN_CLOSE_WRITE

没有 IN_MODIFY

此外,不要像我刚才那样通过使用 vim 编辑它来测试修改 - 它会在打乱工作拷贝和交换的同时删除文件,这会删除监视。 pico 有效。

关于c++ - inotify 不在文件修改时触发通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15228337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com