2

我在一侧有文件路径以及我想要复制它们的新路径。

如何测试它们是否可以简单地硬链接或应该被复制?

4

2 回答 2

4

第一步:调用链接

第 2 步:如果它返回 -1 并errno设置为EXDEV,则进行复制。

[更新]

一般来说,没有可移植(可靠)的方法来回答这个问题。我认为最接近的方法是调用statvfs作为源和目标,然后比较statvfs 结构f_fsid的字段。

不幸的是,POSIX 不保证该f_fsid领域的任何特别内容。这个测试应该在 Linux 上工作,除非你问的是 NFS 挂载的文件系统......

于 2012-02-03T05:59:27.230 回答
1

Nemo 的回答确实是最简单的解决方案:尝试link(2)系统调用。

如果您只想知道路径是否可硬链接,甚至不尝试link(2)系统调用,您可以找到它们的文件系统,例如使用statfs(2),检查它们是否在同一个文件系统上,并检查文件系统的类型是否足够好。

于 2012-02-03T06:03:19.683 回答