如何确定使用stat()文件是否是符号链接?
我基本上必须为一个类编写一个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; }
我的代码ALWAYS打印this is not a link
即使它是,并且我知道一个事实,所述文件是一个符号链接,因为实际的ls命令这样说,再加上我创建了sym-link …
谁能发现我可能做错了什么? 谢谢您的帮助!
你不能。
你需要使用lstat()
来统计链接本身,plain stat()
将跟随链接,因此永远不会“看到”链接本身。