0

我正在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(全八进制)。是什么赋予了?

4

1 回答 1

0

基于@dave_thompson_085 的观察:确实,stat()遵循符号链接;我应该打电话lstat()- 它做完全相同的事情,但不遵循链接。

于 2016-11-30T21:19:15.797 回答