Получение абсолютного пути к файлам в C
Мне нужен метод, чтобы получить абсолютный путь к файлу на языке программирования C для реализации команды 'cp' UNIX. Цель состоит в том, чтобы показать ошибку, когда исходный путь и целевой путь совпадают.
Есть несколько возможностей, например:
cp file . // show error
cp ../file .
cp file file // show error
Я не нашел хорошего способа решить эту проблему.
1 ответ
Преобразование комментариев в ответ.
Уважать realpath()
чтобы получить "настоящее имя" пути, но это действительно не обязательно. Ты можешь использовать stat()
чтобы увидеть, совпадают ли номер устройства и индекс для двух имен.
Также обратите внимание, что если у вас есть два связанных файла (например, /home/user1/name1
а также /home/user2/name2
), имена могут отличаться, но все же относятся к одному и тому же файлу (и ссылки могут быть "жесткими" или символическими). Вы можете обнаружить их эквивалентность с stat()
но не с realpath()
- по крайней мере, не с realpath()
если ссылка жесткая.