我基本上必须为一个类编写一个 UNIX ls 命令的克隆,而且我几乎已经完成了所有工作。我似乎不知道该怎么做的一件事是检查文件是否是符号链接。从 的手册页中stat()
,我看到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 命令是这样说的,而且我创建了符号链接......
谁能发现我可能做错了什么?谢谢您的帮助!