我试图修改我的代码,而不是导航作为符号链接的文件,但它仍然导航那些别名
stat()
永远不会返回这样的数据
S_ISLNK(info.st_mode)
为真(见下文除外)。每
the POSIX
stat()
documentation
:
如果命名文件是符号链接,则
stat()
函数应使用符号链接的内容继续进行路径名解析,并应返回与结果文件有关的信息(如果文件存在)。
和
这个
lstat()
函数应等效于stat(),除非path指的是符号链接。那样的话
lstat()
应返回链接的信息,而stat()应返回链接引用的文件的信息。
你需要更换
stat(entry_name, &info);
if(S_ISDIR(info.st_mode) && !S_ISLNK(info.st_mode)){
//navigate to next_entry
}
具有
int rc = lstat(entry_name, &info);
if((rc==0) && S_ISDIR(info.st_mode) && !S_ISLNK(info.st_mode)){
//navigate to next_entry
}
还请注意的返回值来自
[l]stat()
需要检查。的内容
info
如果
[l] stat()
调用失败,因此使用的检查
ISDIR()
和
ISLNK()
可以返回任何值。