修改和保存文件时,请输入delete_self

hyp*_*ean 4 linux inotify

我正在运行一个小的inotify脚本,用于在文件上设置监视.每次编辑和保存该文件时,脚本都会注意到触发了DELETE_SELF事件.这是正常的,如果是为什么?inotify子系统不应该注意到文件仍然存在吗?

Tyl*_*nry 10

这取决于编辑文件的应用程序正在使用它.在这种情况下,它听起来像编辑器保存文件时的行为是删除旧文件并将新内容写为具有相同名称的新文件.从inotify的角度来看,这正是发生的事情,因此它会触发一个删除事件,然后触发一个创建事件.Inotify无法知道已删除的文件和在其位置创建的文件在逻辑上是相关的.

  • 实际上,它通常不会执行`unlink()`部分 - `rename('moo.txt.blah','moo.txt')`将原子地取消链接并替换`moo.txt`.这是*为什么*编辑以这种方式这样做 - 因为操作是原子的,如果您的编辑器或系统崩溃,那么您可以保证看到旧文件或新文件 - 而不是半编写的混合文件. (3认同)