我必须为一个课程编写一个类似于UNIX ls命令的克隆版本,几乎所有东西都已经可以工作了。唯一我无法弄清楚如何做的是检查文件是否为符号链接。从stat()
的man页中,我看到定义了一个mode_t
值,即S_IFLNK
。
这是我尝试检查文件是否为符号链接的方式,但无济于事(注意,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;
}
即使链接是存在的,我的代码总是打印this is not a link
。我知道实际上这个文件是一个符号链接,因为ls命令也是这么说的,而且我自己创建了这个符号链接……
有人能发现我做错了什么吗?感谢帮助!