获取C中文件的绝对路径

时间:2015-03-19 19:38:58

标签: c file unix cp

我需要一种方法来获取C编程语言中文件的绝对路径,以实现'cp'UNIX的命令。当源路径和目标路径相同时,目标是显示错误。

有多种可能性,例如:

cp file .    // show error
cp ../file .
cp file file // show error

我还没有找到解决这个问题的好方法。

1 个答案:

答案 0 :(得分:1)

将评论转换为答案。

查找realpath()以获取路径的“真实姓名”,但实际上并非必要。您可以使用stat()查看两个名称的设备和inode编号是否相同。

另请注意,如果您有两个链接的文件(例如,/home/user1/name1/home/user2/name2),名称可能会有所不同,但仍会引用同一个文件(链接可能是'硬'或象征性的)。如果链接是硬链接,您可以使用stat()但不能使用realpath()来检测它们的等效性 - 至少不是realpath()