Linux2 6核心中的檔案系統變化通知機制

2022-08-20 01:30:15 字數 1542 閱讀 8560

inotify:是一種強大的、細粒度的、非同步的機制,它滿足各種各校的檔案監控需要。

inotify 可以監視的檔案系統事件包括:

in_access,即檔案被訪問

in_modify,檔案被 write

in_attrib,檔案屬性被修改,如 chmod、chown、touch 等

in_close_write,可寫檔案被 close

in_close_nowrite,不可寫檔案被 close

in_open,檔案被 open

in_moved_from,檔案被移走,如 mv

in_moved_to,檔案被移來,如 mv、cp

in_create,建立新檔案

in_delete,檔案被刪除,如 rm

in_delete_self,自刪除,即乙個可執行檔案在執行時刪除自己

in_move_self,自移動,即乙個可執行檔案在執行時移動自己

in_unmount,宿主檔案系統被 umount

in_close,檔案被關閉,等同於(in_close_write | in_close_nowrite)

in_move,檔案被移動,等同於(in_moved_from | in_moved_to)

注:上面所說的檔案也包括目錄。 

inotify原始碼安裝

安裝inotify

wget

tar zxvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure

make

make install

例項:#include

#include

#include

#include

#include

using namespace std;

//_syscall0(int, inotify_init)

//_syscall3(int, inotify_add_watch, int, fd, const char *, path, __u32, mask)

//_syscall2(int, inotify_rm_watch, int, fd, __u32, mask)

char * monitored_files = ;

struct wd_name ;

#define wd_num 2

struct wd_name wd_array[wd_num];

char * event_array = ;

#define event_num 16

#define max_buf_size 1024

int main(void)

{int fd;

int wd;

char buffer[1024];

char * offset = null;

struct inotify_event * event;

int len, tmp_len;

char strbuf[16];

int i = 0;

Linux 2 6核心編譯,核心公升級

本文描述了在fc8下公升級linux核心為2.6.25的詳細步驟.1.首先從如下 得到linux 2.6.25.2.然後在 usr src下untar這個包.tar xjfv linux 2.6.25.tar.bz2 3.配置核心 cd usr src linux 2.6.25 make mrpro...

Linux2 6核心啟動分析

我們已知u boot的終極目的是啟動核心,那麼核心啟動的開始必定是u boot傳入的引數。開啟armlinux.c 發現有一行的 為 thekernel 0,bd bi arch number,bd bi boot params 帶入三個引數 第乙個引數是0,第二個引數是機器id,第三個引數是引數所...

Linux 2 6 核心驅動移植

隨著 linux 2.6的發布,由於2.6核心做了教的改動,各個裝置的 驅動程式在不同程度上要進行改寫。為了方便各位linux愛好者我把自己整理的這分文件share出來。該文當列舉了2.6核心同以前版本的絕大多數變化,可惜的是由於時間和精力有限沒有詳細列出各個函式的用法。1 使用新的入口 必須包含 ...