12-总结
11.6 总结
对于系统实现必须支持的限制和可能支持的系统选项,SUSv3都做了规范。
通常,不建议将对系统限制和选项的假设值硬性写入应用程序代码,因为这些值既可能随系统的不同而发生变化,也可能在同一个系统实现中因不同的运行期间或文件系统而不同。因此,SUSv3规定了一干方法,借助于此,系统实现可发布其所支持的限制和选项。对于大多数限制,SUSv3规定了所有实现所必须支持的最小值。此外,每个实现还能在编译时(通过定义于<limits.h>或<unistd.h>文件中的常量)和/或运行时(通过调用 sysconf()、pathconf()或 fpathconf()函数) 发布其特有的限制和选项。此类技术同样可应用于找出实现所支持的SUSv3选项。在一些情况下,无论使用上述何种方法,都不能获取某个特定限制的值。对于这些不确定的限制,必须采用特殊技术来确定应用程序所应遵循的限制。
更多信息
[Stevens & Rago,2005]第1章和[Gallmeister,1995] 第2章均涵盖了与本章相类似的知识,[Lewine,1991]也提供了很多有用的(尽管稍有过时)背景知识。在Linux及glibc中与POSIX选项有关的一些详细信息,可见诸于http://people.redhat.com/drepper/posix-option-groups.html。相关的Linux手册页如下:sysconf(3)、pathconf(3)、feature_test_macros(7)、posixoptions(7)和 standards(7)。
最佳的信息来源(虽然有时难以理解)还是 SUSv3 中的相关部分,特别是基本定义(XBD)的第2章以及针对<unistd.h>、<limits.h>、sysconf()和fpathconf()的规格说明。[Josey,2004]也为SUSv3的使用提供了指导。