Linux inotify監聽文件變化機制

inotify是Linux的一個特性, 2.6.13以及以後的版本纔有,可以從 /usr/include/sys/inotify.h 看看有沒有這個文件

或者uname -a看看你當前系統支持不支持

1、inotify監聽API函數

頭文件:#include <sys/inotify.h>

1)int inotify_init (void)

   創建監聽inotify實例,返回文件描述符,內部創建:inotify_device

   返回值:返回文件描述符(fd),即給下面倆函數的輸入參數值

2)int inotify_add_watch (int __fd, const char * __name, uint32_t __mask)

    參數:fd爲文件描述符,name被監測的文件名/目錄名的路徑,mask爲事件掩碼

    返回值:監視器的描述符

3)int inotify_rm_watch (int __fd, uint32_t __wd)

    將fd文件描述符和wd監聽描述符,從notify_device的監視器列表中刪除。



遇到的問題

在監聽具體某個文件的時候,如果是用vim/vi編輯器改當前監聽文件(test.conf)的時候,實際監聽的是(test.conf.swp)格式的文件,

導致監聽失敗。

解決方法

1)建議如果修改文件具體內容的時候,用echo命令修改。此方法可以監聽成功

2)第二種就是拷貝一份同樣的文件,修改備份文件,然後再用備份文件覆蓋這個文件也能監聽成功,但是測試只有第一次是監聽成功了

發佈了50 篇原創文章 · 獲贊 48 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章