2013-11-21 29 views
2

我正在使用gevent和gevent_inotifyx运行python以使用IN_CLOSE_WRITE掩码观察文件以进行任何修改,以等待文件在写入后关闭。我第一次开始我的活动,但不是在那之后。我使用vim手动编辑文件。inotify IN_CLOSE_WRITE仅针对手动编辑的文件触发一次

使用不同的日志文件来观看,并按预期工作。这是一个python日志记录文件,任何时间日志文件都会随着内容的变化而得到一个事件触发。

有没有人遇到过这种情况?这可能是由于某些同步或刷新到磁盘?

+0

在vim中发出了什么特定的命令,你希望看到伴随着一个'IN_CLOSE_WRITE'事件? – iruvar

+0

安装命令行工具'inotifywait',运行它并检查它在通过vim编辑文件时报告的事件。如果它报告了'IN_CLOSE_WRITE'事件(就像我在我的结尾尝试这样做时那样),则可能在您的代码中 – iruvar

+0

在vim中我使用':wq'来保存它,我会尝试'inotifywait'来调试并让你知道,谢谢。 – opensourcegeek

回答

5

默认情况下,Vim将文件内容写入临时文件,然后将其移至原始文件上,请参阅:help backup。由于这是一个不同的文件(句柄),所以你的事件停止发射。

可以使vim覆盖原文件设置

:set backupcopy=yes 

如果你想一般处理这个问题,你必须监控文件的目录,而不是看着文件移动了。