Linux 用inotify監聽檔案和目錄

2021-09-19 22:11:02 字數 1262 閱讀 1103

日常應用中,常常會遇到以下場景,監控資料夾a,若資料夾中的b檔案發生變化,則執行c命令。linux下可以通過inotify完成該功能。

自從linux kernel 2.6.13起,inotify以作為核心的一部份,同時需要glibc 2.4以上版本。

1. 相關函式

inotify_init() - 建立乙個inotify例項

inotify_add_watch(int fd, const char *pathname, uint32_t mask) - 加入檔案或目錄到inotify進行監測

inotify_rm_watch(int fd, int wd) - 移除乙個watcher

2. 相關結構

struct inotify_event ,    

,    

,    

,    

,    

,    

,    

,    

,    

,    

,    

,    

,    

//,    

,    

,    

,    

,    

,    

,    

,    

int monitor = inotify_init();  

if (-1 == monitor)  else if (((in_create|in_moved_to)&event->mask) && (in_isdir&event->mask))  else if (action_del_wd == action) {

if (!inotifytools_remove_watch_by_wd(event->wd)) {

printf("inotifytools_remove_watch_by_wd failed. event->wd(%d)n", event->wd);

goto error;

event = inotifytools_next_event(-1);

printf("exitn");

return 0;

error:

err = inotifytools_error();

printf("error(%d)n", err);

return -1;

**很簡單。就是在獲得事件以後,檢查是否為目錄。如果是目錄,則需要進行動態監控的檢查。如果是建立動作,那麼就新增新的監控。如果是刪除動作,就去掉已有的監控wd。

Linux之了解inotify監聽檔案變化機制

在日常的運維過程中,經常需要備份某些檔案,或者對系統的某些檔案進行監控,比如重要的配置檔案等。如果需要作到實時同步或者監控,就需要使用核心的inotify機制 inotify 是基於inode級別的檔案系統監控技術,是一種強大的 細粒度的 非同步的機制,它滿足各種各樣的檔案監控需要,不僅限於安全和效...

linux下inotify的使用

有時候我們需要檢測某個目錄下檔案或者子目錄的改動狀況,如新增 刪除 以及更新等,linux系統上提供了inotify來完成這個功能。inotify是在版本2.6.13的核心中首次出現,現在的發行本應該都包含這個系統呼叫了。下面的描述中的檔案如無特別說明包括檔案以及目錄 使用inotify的第一步就是...

linux開發 檔案監控 inotify

從linux 2.6.13開始引入inotify來監控檔案,代替舊的dnotify。因此舊版本的glibc並不提供inotify系統呼叫的封裝。標頭檔案 sys inotify int inotify init 建立乙個inotify例項,並返回乙個引用inotify例項檔案描述符,檔案描述符使用c...