【问题标题】:How to differentiate between a regular file and a symbolic link? [duplicate]如何区分常规文件和符号链接? [复制]
【发布时间】:2016-11-15 10:36:07
【问题描述】:

我正在使用 linux 中的 C posix 处理符号链接。

我检测到一个文件,我必须区分常规文件和符号链接。

现在我做下一个:

if(S_ISREG(direct_info.st_mode)) {
   // deal with regular file
}
else if(S_ISLNK(direct_info.st_mode)) {
   // deal with symbolic link
}

问题在于,当文件是符号链接时,执行流程在第一个 if 处进入。也就是说,符号链接何时也输入S_ISREG 条件。那么,我该怎么做才能区分两者呢?

【问题讨论】:

  • 先检查是不是链接
  • 你是如何获得direct_info的?

标签: c linux posix symlink


【解决方案1】:

您可能正在使用stat() 来获取文件模式。 stat() 实际上返回有关目标的信息,而不是链接本身。 因此,为了获取有关链接本身的信息,您需要使用lstat()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多