2016-11-30 14 views
0

저는이 심볼릭 링크 (쿠분투 GNU/리눅스 16.04)를 가지고 있고, 0100600 8 진수 (33152 10 진수)의 이상한 값을 얻고 있습니다. 내가 bitwise-S_IFMT (이는 0170000 8 진수)으로, 나는 0600 8 진수를 얻는다. 그게 무슨 뜻 이죠? 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. */ 

나는 0,120,000 아니라 0600 (모든 진수)를 참조하십시오 기대하고있다. 뭐라 구요?

+1

symlink의'stat'는 심볼릭 링크 자체가 아닌, 심볼릭 링크의 타겟 상태를 반환합니다. 심볼릭 링크는 권한 rw -------가있는 일반 파일을 가리 킵니다. 여러분이 사용하는 시스템 콜에 대한 매뉴얼 페이지를 읽는 것을 고려해 볼 수 있습니다. –

답변

0

@ dave_thompson_085의 관찰에 따르면 : 실제로 stat()이 심볼릭 링크를 따릅니다. lstat() - 정확히 똑같은 일을하지만 링크를 따르지 않아야합니다.