我基本上必须为一个类写一个UNIX ls命令的克隆,而且几乎所有东西都在工作.我似乎无法弄清楚如何做的一件事是检查文件是否是符号链接.从手册页中stat()
,我看到有一个mode_t
定义的值,S_IFLNK
.
这就是我试图检查一个文件是否是一个sym-link,没有运气(注意,stbuf是stat()
将inode数据返回的缓冲区):
switch(stbuf.st_mode & S_IFMT){
case S_IFLNK:
printf("this is a link\n");
break;
case S_IFREG:
printf("this is not a link\n");
break;
}
Run Code Online (Sandbox Code Playgroud)
我的代码总是打印,this is not a link
即使它是,并且我知道所述文件是符号链接,因为实际的ls命令是这样说的,而且我创建了sym-link ...
谁能发现我可能做错了什么?谢谢您的帮助!
unw*_*ind 24
你不能.
您需要使用lstat()
stat来统计链接本身,plain stat()
将跟随链接,因此永远不会"看到"链接本身.