我一直在使用scandir
,并使用d_type区分目录和文件:
int isdir(const struct dirent *entry)
{
return entry->d_name[0]!='.' && entry->d_type&4;
}
和
int isfile(const struct dirent *entry)
{
return entry->d_name[0]!='.' && entry->d_type&8;
}
很明显0100b
是一个目录,而1000b
是一个文件,经过一些调查后,我很明显0010b
代表了一个符号链接。所以你想(或者至少,我做过)0110b
代表一个符号链接目录,而1010b
将是文件的符号链接,但那不是什么我经历过。
相反,所有符号链接都显示d_type
1010b
为{{1}}常规文件或目录。如何区分符号链接文件与符号链接目录?
答案 0 :(得分:1)
没有“符号链接文件”或“符号链接目录”。符号链接是它自己的类型:无论它指向什么,它都是相同类型的对象。此外,它甚至不需要指向任何东西:符号链接可以被破坏。查看stat
系统调用,并与lstat
进行比较。 stat
读取符号链接; lstat
获取符号链接inode本身的属性。