c - 如何查找给定文件是符号(软)链接还是硬链接(hard link)

标签 c linux operating-system symlink

<分区>

使用 c 代码,我想知道给定文件(如 test.c)是否是符号链接(symbolic link)。我尝试使用 stat() 函数。 我正在检查

nlink_t   st_nlink;   /* number of hard links */

统计结构的成员。

struct stat stbuf;
stat("test.c", &stbuf)

stbuf.st_nlink 在硬链接(hard link)和软链接(soft link)的情况下给出了一个。

我做得对吗?或者是否有任何其他方法来检查给定文件是软链接(soft link)还是硬链接(hard link)。

最佳答案

不,您需要使用 lstat()能够检测文件是否为软链接(soft link)。

另外请确保您了解通常不存在三种不同类型的文件:文件、文件硬链接(hard link)和文件软链接(soft link)。相反,只有两种:硬链接(hard link)到文件和软链接(soft link)。您可能认为的"file"实际上也是一个硬链接(hard link),它通常只是一个链接。

关于c - 如何查找给定文件是符号(软)链接还是硬链接(hard link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21755731/

相关文章:

c - C中的 boolean 表达式

c++ - RedHatLinux : Is it possible to programatically load the libcert. 那么共享对象?

php - 从 PHP 脚本获取 Windows 和 Linux 上的主目录的最佳形式是什么?

动态库中定义的小函数可以内联吗?

c - 这段代码对于使用函数检查 c 中的素数是否正确?

c - 是否有原始的 linux 系统调用 API/ABI 文档

c - 我以为存在内存入侵问题,是吗?

linux - 这是什么意思?

assembly - x86 程序集中的地址是虚拟地址还是物理地址?

windows - Powershell 获取所有光驱盘符