Сравнение двух структурных файлов (ядро Linux) - PullRequest
2 голосов
/ 15 февраля 2012

Взгляните на struct file определение из этого кода версии ядра Linux 2.6.18.

Я пытаюсь сравнить две struct file переменные в моем коде и определить, ссылаются ли они на один и тот же файл.Есть ли какой-то уникальный идентификатор в этой структуре, который помог бы мне сделать это сравнение?Или есть какие-нибудь вспомогательные функции?

1 Ответ

1 голос
/ 15 февраля 2012

Иоахим находится на правильном пути, но, кроме номера инода, необходимо сравнить его устройство, поскольку каждая файловая система, скорее всего, будет иметь индекс 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

Я думал, что было большое / второстепенное устройство, но я не смог его найти. Таким образом, сравнение имени устройства (/dev/dsk/hda1) является детерминированным, если не таким быстрым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...