如何区分常规文件和符号链接?

时间:2016-11-13 19:06:34

标签: c linux posix symlink

我在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条件。那么,我能做些什么来区分两者?

1 个答案:

答案 0 :(得分:2)

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