c - C中获取文件的绝对路径

标签 c file unix cp

我需要一种在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/

相关文章:

python将文件复制到Windows上的网络位置而不映射驱动器

java - 生成给定大小的文件

linux - 删除所有早于给定时间的文件并记录其操作的命令

c - 如何在 C 中实现我自己的基本 unix shell?

C 套接字的读/写 for 循环问题

c - Make 似乎忽略了我的 CFLAGS 和 LDFLAGS

C从文件中读取

java - File.renameTo() 失败

shell - 如何将文本发送到 shell 脚本中的进程?

c - 为什么即使没有服务器监听,ZeroMQ 连接也返回 0?