看一下struct file
定义from this code Linux 内核版本 2.6.18。
我正在尝试比较代码中的两个 struct file
变量,并确定它们是否指的是同一个文件。该结构中是否有任何唯一标识符可以帮助我进行比较?或者是否有可用的辅助函数?
最佳答案
Joachim 走在正确的轨道上,但除了 inode 编号之外,还必须比较其设备,因为每个文件系统可能都有一个 inode 1、inode 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
) 是确定性的,即使不是那么快。
关于比较两个结构文件(Linux 内核),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9288326/