c - Linux 中是否有两个硬链接(hard link)连接到一个文件?

标签 c linux unix

<分区>

Possible Duplicate:
How to check whether two file names point to the same physical file

我如何知道两个硬链接(hard link)是否连接到 Linux 中 C 中的一个文件。

谢谢。

最佳答案

使用 stat() or fstat()两个路径的功能。如果在返回的结构中 st_dev 和 st_ino 字段相同,则路径引用相同的文件系统对象。

编辑:

请注意,您需要检查 st_dev 和 st_ino。否则,您将冒着匹配不同文件系统中恰好具有相同 inode 号的两个文件的风险。如果您在两个挂载点上运行 stat,您可能会看到这一点:

$ stat / /boot | grep Device
Device: 903h/2307d  Inode: 2           Links: 23
Device: 902h/2306d  Inode: 2           Links: 3

您可以在输出中清楚地看到相同的 inode 编号。

关于c - Linux 中是否有两个硬链接(hard link)连接到一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361318/

相关文章:

c - Linux内核模块无线接口(interface)比特率

c - 在 C 中将单个文件拆分为多个文件 - 性能方面

regex - sed 替换为部分字符串

c - 如何找出代码何时读取父进程或子进程以及它们如何在 C 中进行通信

OSX 上的 python 和 echo -n

计算 C 的时间差(天、小时、分钟、秒)

c - 在 C 中声明和初始化未知大小的二维数组

php - Ubuntu 16 中缺少 php_soap.dll

linux - 如何从 perl 脚本检测我的服务器是否正在运行 centos 或其他

regex - unix/linux 上的 grep : how to replace or capture text?