Эта же запись в файловой системе может быть доступна по нескольким путям.Как получить полный полный путь к файлу или каталогу, имеющему один из его путей?
- реальный полный путь -/Главная/пользователь/dir1/file1
- путь, который содержит родительские каталоги - /home/user/dir1/../dir1/file1
- путь с прямые симлинки -/Главная/пользователь/dir1/symlink_to_file1
- путь с косвенными симлинками -/Главная/пользователь/symlink_to_dir1/file1
- ...
Я хочу написать две функции, которые для заданных двух путей будут определять, находится ли файл или каталог, указанный вторым путем, внутри (включая подкаталоги) каталог, указанный первым путем.
Я думаю, что наиболее очевидным решением является поиск реальных полных путей обеих записей файловой системы, а затем проверка того, является ли первый реальный путь префикс второго. Вот почему заголовок вопроса о поиске реальных полных путей.
ПРИМЕЧАНИЕ. Я хочу написать функцию как для Windows, так и для POSIX-совместимых систем.
ПРИМЕЧАНИЕ: boost :: filesystem не может использоваться.
Вы считаете жесткие ссылки? Я не думаю, что идея каталогов (или файлов), имеющих единственное «настоящее имя», имеет смысл в Linux. – unwind
Это не имеет особого смысла в Windows. Однако при обычной установке Windows нет файлов с несколькими записями в каталоге (hardlinks). –