如何区分常规文件和符号文件link?
How to differentiate between a regular file and a symbolic link?
我正在使用 linux 中的 C posix 处理符号 links。
我检测到一个文件,我必须区分常规文件和符号文件 link。
现在我做下一个:
if(S_ISREG(direct_info.st_mode)) {
// deal with regular file
}
else if(S_ISLNK(direct_info.st_mode)) {
// deal with symbolic link
}
问题是当文件是符号文件时 link 执行流程在第一个 if 处输入。也就是说,当是符号 link 时,也会进入 S_ISREG
条件。那么,我能做些什么来区分两者呢?
您可能正在使用 stat()
获取文件模式。 stat()
实际上 returns 有关目标的信息,而不是 link 本身。
因此,为了获取有关 link 本身的信息,您需要使用 lstat()
.
我正在使用 linux 中的 C posix 处理符号 links。
我检测到一个文件,我必须区分常规文件和符号文件 link。
现在我做下一个:
if(S_ISREG(direct_info.st_mode)) {
// deal with regular file
}
else if(S_ISLNK(direct_info.st_mode)) {
// deal with symbolic link
}
问题是当文件是符号文件时 link 执行流程在第一个 if 处输入。也就是说,当是符号 link 时,也会进入 S_ISREG
条件。那么,我能做些什么来区分两者呢?
您可能正在使用 stat()
获取文件模式。 stat()
实际上 returns 有关目标的信息,而不是 link 本身。
因此,为了获取有关 link 本身的信息,您需要使用 lstat()
.