2012-02-15 28 views
2

查看Linux內核版本2.6.18的struct file定義from this code比較兩個結構文件(Linux內核)

我試圖在我的代碼中比較兩個struct file變量,並確定它們是否指的是同一個文件。該結構中是否有任何唯一標識符可以幫助我進行比較?還是有任何可用的幫手功能?

+0

'f_dentry'指針包含一個字段'd_inode',我認爲它應該是唯一的文件。 – 2012-02-15 06:19:27

回答

1

約阿希姆是在正確的軌道上,但除了索引節點號,一會要比較它的設備,因爲每個文件系統將可能有一個inode 1,索引節點2,...:

if (f1->f_dentry.d_inode == f2->f_dentry.d_inode && 
    !strcmp (f1->f_vfsmnt->mnt_devname, f2->f_vfsmnt->mnt_devname)) 
     // it is the exact same file 

我想有一個主要/次要設備ID,但我一直無法找到它。所以比較設備名稱(/dev/dsk/hda1)是確定性的,如果不是那麼快。

+0

由於'd_inode'是一個指向'struct inode'的指針,用於描述某個文件,所以如果'(f1-> f_dentry.d_inode == f2-> f_dentry.d_inode)'爲真,那麼'f1'和'f2'指向同一個文件。 – 2012-02-15 07:54:00