【问题标题】:How to find given file is a symbolic (soft) link or hard link [duplicate]如何查找给定文件是符号(软)链接或硬链接[重复]
【发布时间】:2014-02-13 21:32:57
【问题描述】:

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

nlink_t   st_nlink;   /* number of hard links */

统计结构的成员。

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

stbuf.st_nlink 在硬链接和软链接的情况下都给出一个。

我做得对吗?或者有没有其他方法可以检查给定文件是软链接还是硬链接。

【问题讨论】:

标签: c linux operating-system symlink


【解决方案1】:

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

还要确保您了解,通常不存在三种不同类型的文件:文件、文件的硬链接和文件的软链接。相反,只有两个:文件的硬链接和软链接。您可能认为的“文件”实际上也是一个硬链接,它通常只是单个链接。

【讨论】:

  • 我正在使用这段代码 struct stat stbuf; stat("softlink_uname.c", &stbuf)) if (S_IFLNK == stbuf.st_mode & S_IFMT) printf("这是一个软链接\n"); else if (S_IFREG == stbuf.st_mode & S_IFMT) printf("这不是一个链接\n");但是什么都没有打印,我做错了吗?
  • @Abhiteshkhatri 是的,你使用了错误的功能,就像我说的你必须使用lstat() stat(),检测软链接。
  • 谢谢,很抱歉输入错误,现在我正在使用 lstat 但没有打印。
  • thnx ,我得到了错误..现在它正在工作。
猜你喜欢
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2011-01-30
相关资源
最近更新 更多