【发布时间】:2011-02-07 19:40:15
【问题描述】:
我基本上必须为一个类编写一个 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 命令是这样说的,而且我创建了符号链接......
谁能发现我做错了什么?感谢您的帮助!
【问题讨论】:
-
引用我的 stat(2) 手册页:lstat() 与 stat() 相同,除了如果 path 是符号链接,则链接本身是 stat-ed,而不是它的文件指。