Здравствуйте.
Есть два имени файла, нужно проверить, не ссылаются ли они на один и тот же.
Мне сказали, что если просто сравнить их inode, то они могут, пусть и с очень малой вероятностью, оказаться одинаковыми в случае, если файлы разные, но находятся в разных фс.
Собственно, вопрос к гуру: как проверить без возможности ошибиться?
Заранее спасибо.
Проверка двух файлов на идентичность (Си)
Модератор: Модераторы разделов
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: Проверка двух файлов на идентичность
сравнивать два параметра:
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
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
0xDEFEC8ED
-
Voice
- Сообщения: 1073
- Статус: столлманист
- ОС: Debian GNU/Linux
Re: Проверка двух файлов на идентичность
А что подразумевается под "идентичностью"? Если содержимое, то посчитать контрольную суму файлов и все.
Или побайтно сравнить, так думаю будет быстрее.
Или побайтно сравнить, так думаю будет быстрее.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
М. В. Ломоносов
-
helendile
- Сообщения: 6
Re: Проверка двух файлов на идентичность
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: под идентичностью подразумевалась именно то, что два имени ссылаются на один и тот же файл.