我需要一种方法来获取C编程语言中文件的绝对路径,以实现'cp'UNIX的命令。当源路径和目标路径相同时,目标是显示错误。
有多种可能性,例如:
cp file . // show error
cp ../file .
cp file file // show error
我还没有找到解决这个问题的好方法。
答案 0 :(得分:1)
将评论转换为答案。
查找realpath()
以获取路径的“真实姓名”,但实际上并非必要。您可以使用stat()
查看两个名称的设备和inode编号是否相同。
另请注意,如果您有两个链接的文件(例如,/home/user1/name1
和/home/user2/name2
),名称可能会有所不同,但仍会引用同一个文件(链接可能是'硬'或象征性的)。如果链接是硬链接,您可以使用stat()
但不能使用realpath()
来检测它们的等效性 - 至少不是realpath()
。