比较两个结构文件(Linux 内核)

标签 c file linux-kernel

看一下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/

相关文章:

java - 我想创建一个类来创建文件,并使用主类来检查该文件是否已创建,但我的代码失败。 ( java )

linux - 具有 undefined reference 错误的 udevadm 代码

C 获取文件/目录的所有者和组

c - 如何找到数组中最大和最小数字的位置?

MySQL C API : Need example for initiating DB on *Embedded* mode

django - 如何编写批处理文件以自动启动 Django Web 服务器

C 在多线程程序中在哪里定义互斥体?

C++ 打开文件只在不存在时写入

linux-kernel - 在运行时调整 MTD 分区的大小

c - 如何在linux内核中定义全局变量?