我需要一种在C语言中获取文件绝对路径的方法,以执行UNIX的'cp'命令。目的是当源路径和目标路径相同时显示错误。
有多种可能性,例如:
cp file . // show error
cp ../file .
cp file file // show error
我还没有找到解决这个问题的好方法。
最佳答案
将评论转换为答案。
查找realpath()
获取路径的“真实名称”,但这确实没有必要。您可以使用stat()
查看两个名称的设备和 inode 号是否相同。
另请注意,如果您链接了两个文件(例如 /home/user1/name1
和 /home/user2/name2
),则名称可能不同但仍然引用同一个文件(并且链接可以是“硬”链接或符号链接(symbolic link))。您可以使用 stat()
检测它们的等价性,但不能使用 realpath()
检测它们的等价性 — 至少,如果链接是硬链接(hard link)。
关于c - C中获取文件的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153516/