我正在学习POSIX API,我不理解一些名称背后的逻辑.
例如
S_IRUSR,S_IRUSR
什么是什么S代表什么?我明白了R,W是为了读写.但是POSIX的命名约定是什么?就像Win32遵循匈牙利表示法命名一样,POSIX的命名方式如何?对于像POSIX这样的标准,必须有它的文档......
我不确定他们是否有任何意义,除非他们在sys/stat.h,所以S可能代表"统计".
我尝试做一些侦探工作,例如,IEEE Std 1003.1,2004版条目sys/stat.h说:首先在问题1中发布.源自SVID的问题1.
然后,系统V应用程序二进制接口的开发人员规范(参见第1a卷 [pdf]),第95页,甚至名称以S_.我还没有比这更进一步.
关于你的问题:大部分是历史.例如,creat()在POSIX中,但名称来自历史.许多POSIX函数名称(和行为)来自C标准.事实上,他们的描述通常有如下文字:
此参考页面上描述的功能与ISO C标准一致.此处描述的要求与ISO C标准之间的任何冲突都是无意的.IEEE Std 1003.1-2001的该卷符合ISO C标准.
我认为找到POSIX API背后的任何逻辑的唯一方法是阅读Unix的历史.
以下可能有所帮助:
前导S_只是为了识别该常量所对应的结构/功能。
从 中<sys/stat.h>,常量S_IRUSR、S_IWUSR等是 forst_mode成员的可能值struct stat(在 和 中使用stat())。的所有成员都struct stat以前缀 开头st_,并且有几个stat相关的宏也以 开头S_。该约定只是为了使结构名称、成员名称和常量的匹配更加容易。