Проверка двух файлов на идентичность (Си)

Модератор: Модераторы разделов

helendile
Сообщения: 6

Проверка двух файлов на идентичность

Сообщение helendile »

Здравствуйте.
Есть два имени файла, нужно проверить, не ссылаются ли они на один и тот же.
Мне сказали, что если просто сравнить их inode, то они могут, пусть и с очень малой вероятностью, оказаться одинаковыми в случае, если файлы разные, но находятся в разных фс.
Собственно, вопрос к гуру: как проверить без возможности ошибиться?
Заранее спасибо.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Проверка двух файлов на идентичность

Сообщение nesk »

сравнивать два параметра:
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */

PS но перед тем, как бегать искать второе имя файла, целесообразно убедиться, что оно вообще есть: Посмотреть, что поле nlink_t st_nlink; /* number of hard links */ имеет значение больше 1
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Проверка двух файлов на идентичность

Сообщение Voice »

А что подразумевается под "идентичностью"? Если содержимое, то посчитать контрольную суму файлов и все.
Или побайтно сравнить, так думаю будет быстрее.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
helendile
Сообщения: 6

Re: Проверка двух файлов на идентичность

Сообщение helendile »

nesk писал(а):
18.12.2008 01:36
сравнивать два параметра:
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */

PS но перед тем, как бегать искать второе имя файла, целесообразно убедиться, что оно вообще есть: Посмотреть, что поле nlink_t st_nlink; /* number of hard links */ имеет значение больше 1

Спасибо большое :)

2Voice: под идентичностью подразумевалась именно то, что два имени ссылаются на один и тот же файл.
Спасибо сказали: