2016-11-30 2 views
0

I is stat() 'в этой символической ссылке (на Kubuntu GNU/Linux 16.04), и я получаю странное значение октаны 0100600 (33152 десятичного). Если я поразрядный - и это с S_IFMT (который является 0170000 восьмеричным), я получаю 0600 восьмеричный. Что это значит? stat.h перечислены следующие значения:st_mode символической ссылки имеет странное значение

/* File types. */ 
#define __S_IFDIR 0040000 /* Directory. */ 
#define __S_IFCHR 0020000 /* Character device. */ 
#define __S_IFBLK 0060000 /* Block device. */ 
#define __S_IFREG 0100000 /* Regular file. */ 
#define __S_IFIFO 0010000 /* FIFO. */ 
#define __S_IFLNK 0120000 /* Symbolic link. */ 
#define __S_IFSOCK 0140000 /* Socket. */ 

Я ожидал увидеть 0120000, а не 0600 (все восьмеричное). Что дает?

+1

'stat 'символической ссылки возвращает статус цели символической ссылки, а не символическую ссылку. Ваша символическая ссылка, по-видимому, указывает на обычный файл с разрешением rw -------. Вы можете подумать о том, чтобы прочитать man-страницу для использования syscall. –

ответ

0

Основано на наблюдении @ dave_thompson_085: Действительно, stat() следует символическим ссылкам; Я должен позвонить lstat() - что делает то же самое, но не следует по ссылке.

Смежные вопросы