2012-02-15 67 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