我在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
条件。那么,我能做些什么来区分两者?
答案 0 :(得分:2)
您可能正在使用stat()
来获取文件模式。 stat()
实际上返回有关目标的信息,而不是链接本身。
因此,为了获得有关链接本身的信息,您需要使用lstat()
。