2012-02-15 9 views
2

struct file Linuxカーネルバージョン2.6.18のfrom this codeの定義を見てください。2つの構造ファイルの比較(Linuxカーネル)

私はコード内の2つのstruct file変数を比較し、それらが同じファイルを参照しているかどうかを判断しようとしています。この比較に役立つ固有の識別子がその構造内にありますか?または、ヘルパー機能が利用できますか?

+0

'f_dentry'ポインタには、ファイルに対して一意でなければならない' d_inode'フィールドが含まれていると私は思う。 –

答えて

1

ヨアヒムは正しい軌道に乗っているが、各ファイルシステムがありそうなiノード1、ノード2を持っているであろうからinode番号以外に、1はそのデバイスを比較しなければならない、...:

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'は同じファイルを参照します。 –

関連する問題