20

S_IRUSR 是 posix 的 sys/stat.h 中的一个宏常量。它代表用户读取权限位。

前缀 S_ 可能代表 RUSR 的“状态”,可能是用户的读取。但是“我”是什么意思?

4

1 回答 1

28

该命名具有历史意义……可以追溯到 UNIX 的早期。“S”代表 STAT,“I”代表 INODE(POSIX 本身在基本原理之外没有真正使用的术语),“R”代表 READ,“USR”代表 USER。

索引节点确实得到了一些提及,并且统计结构还包括“st_ino”,该标准将其描述为“文件序列号”。在许多 POSIX 实现中,inode 是一种数据结构,其中包含文件的所有元数据(其中大部分是 stat() 调用读取的内容)。

(来自维基百科:)将这些指定为“i”节点的原因尚不清楚。当被问到时,Unix 先驱丹尼斯·里奇回答说:

事实上,我也不知道。这只是我们开始使用的一个术语。“索引”是我最好的猜测,因为稍微不寻常的文件系统结构将文件的访问信息存储为磁盘上的平面数组,所有分层目录信息都在此之外。因此,i-number 是该数组中的一个索引,i-node 是该数组的选定元素。

(第 1 版手册中使用了“i-”符号;连字符逐渐被去掉。)

于 2013-01-18T01:13:18.477 回答