2013-11-21 64 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 

如果你想一般處理這個問題,你必須監控文件的目錄,而不是看着文件移動了。