Как Вы определяете статистику использования (), является ли файл символьной ссылкой?

Я в основном должен записать клон UNIX ls команда для класса, и у меня есть почти все работа. Одна вещь, которую я, может казаться, не выясняю, как сделать, проверить, является ли файл символьной ссылкой или нет. Из страницы справочника для stat(), Я вижу, что существует a 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 говорит так, плюс я создал символьную ссылку...

Кто-либо может определить то, что я могу делать неправильно? Спасибо за справку!

15
задан hora 14 April 2010 в 08:34
поделиться

1 ответ

Вы не можете.

Вам нужно использовать lstat () для определения самой ссылки, plain stat () будет следовать по ссылке и, таким образом, никогда не «увидит» саму ссылку.

24
ответ дан 1 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: