How do you determine using stat() whether a file is a symbolic link?
Posted
by hora
on Stack Overflow
See other posts from Stack Overflow
or by hora
Published on 2010-04-14T08:34:26Z
Indexed on
2010/04/14
8:43 UTC
Read the original article
Hit count: 232
I basically have to write a clone of the UNIX ls command for a class, and I've got almost everything working. One thing I can't seem to figure out how to do is check whether a file is a symbolic link or not. From the man page for stat()
, I see that there is a mode_t
value defined, S_IFLNK
.
This is how I'm trying to check whether a file is a sym-link, with no luck (note, stbuf is the buffer that stat()
returned the inode data into):
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;
}
My code ALWAYS prints this is not a link
even if it is, and I know for a fact that the said file is a symbolic link since the actual ls command says so, plus I created the sym-link...
Can anyone spot what I may be doing wrong? Thanks for the help!
© Stack Overflow or respective owner