Как определить, является ли файл ссылкой?

У меня есть код ниже , здесь показана только его часть и я проверяю, является ли тип файла.

struct stat *buf /* just to show the type buf is*/ 

switch (buf.st_mode & S_IFMT) {
     case S_IFBLK:  printf(" block device\n");            break;
     case S_IFCHR:  printf(" character device\n");        break;
     case S_IFDIR:  printf(" directory\n");               break;
     case S_IFIFO:  printf(" FIFO/pipe\n");               break;
     case S_IFLNK:  printf(" symlink\n");                 break;
     case S_IFREG:  printf(" regular file\n");            break;
     case S_IFSOCK: printf(" socket\n");                  break;
     default:       printf(" unknown?\n");                break;
}

Проблема: значение st_mode получено, когда я выполняю printf ("\ nMode:% d \ n", buf.st_mode) ; результат 33188.

Я тестировал свою программу с обычным типом файла и символической ссылкой. В обоих случаях вывод был «обычным файлом», т.е. случай символьной ссылки не работает, и я не понимаю, почему?

12
задан jww 15 July 2017 в 15:49
поделиться