符号链接的st_mode具有奇怪的值

时间:2016-11-30 20:50:16

标签: symlink stat bit-masks

我是stat()这个符号链接(在Kubuntu GNU / Linux 16.04上),我得到奇怪的值0100600八进制(十进制33152)。如果我按位 - 并且它与S_IFMT(它是0170000八进制),我得到0600八进制。那是什么意思? stat.h列出以下值:

/* 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 个答案:

答案 0 :(得分:0)

基于@ dave_thompson_085的观察:确实,stat()遵循符号链接;我应该打电话给lstat() - 它完全一样,但不跟随链接。