По сути, мне нужно написать клон команды 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 так говорит, плюс я создал символическую ссылку...
Может ли кто-нибудь заметить, что я могу делать неправильно? Спасибо за помощь!