【问题标题】:Is there a system call to find if a certain path is a regular file or a hard link in unix是否有系统调用来查找某个路径是普通文件还是 unix 中的硬链接
【发布时间】:2020-04-21 07:17:41
【问题描述】:

如果两条路径有相同的inode号;其中之一是硬链接。我们是否有一个系统调用来知道其中哪一个是硬链接。或 C 中的任何其他编程方式。

【问题讨论】:

  • 如果两条路径的inode编号相同,则它们都是硬链接。目录中引用文件的条目是指向该文件的硬链接。
  • 统计结构包含一个链接计数(st_nlink)。对于只有单个名称的文件,链接数为1。如果有多个链接,则在此处体现;这样您就可以判断一个文件是否有多个链接,但没有一个是唯一真正的链接。另外,请注意,目录树基本上是通过链接构建的,因此目录的链接计数通常为 2 或更大。
  • 同意,我们可以使用 nlink 找到链接计数。而基于单元的系统中的文件本身就是一个硬链接。

标签: unix operating-system system-calls


【解决方案1】:

如果两条路径有相同的inode号;其中之一是硬链接。

A file name is a hard link by definition in Unix/Linux。除了路径之外,您无法区分硬链接。

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2016-12-22
    相关资源
    最近更新 更多