【发布时间】:2012-02-25 19:33:09
【问题描述】:
我在一侧有文件路径以及我想要复制它们的新路径。
如何测试它们是否可以简单地硬链接或应该复制?
【问题讨论】:
我在一侧有文件路径以及我想要复制它们的新路径。
如何测试它们是否可以简单地硬链接或应该复制?
【问题讨论】:
第 1 步:致电link。
第 2 步:如果它返回 -1 并将 errno 设置为 EXDEV,则进行复制。
[更新]
一般来说,没有可移植(可靠)的方法来回答这个问题。我认为最接近的方法是调用statvfs 作为源和目标,然后比较statvfs structures 的f_fsid 字段。
不幸的是,POSIX 不保证任何关于f_fsid 字段的特别内容。这个测试应该可以在 Linux 上运行,除非你问的是 NFS 挂载的文件系统...
【讨论】:
Nemo's answer 确实是最简单的解决方案:尝试link(2) 系统调用。
如果您只想知道路径是否可硬链接,甚至不尝试 link(2) 系统调用,您可以找到他们的文件系统,例如使用statfs(2),检查它们是否在同一个文件系统上,并检查文件系统的类型是否足够好。
【讨论】: