Unix标准化及实现
三种主要的标准:
ISO C IEEE POSIX Single UNIX Specification(XSI)
一层一层递增,IEEE POSIX 是ISO C的超集。XSI 是POSIX的超集。
限制
要想提高软件的可移植性,就必须有限制:
- 编译时限制
- 运行时的限制
编译时限制:因为某些限制是固定的,则可以在头文件中定义。
运行时限制:限制是变化的,则必须在函数运行时调用函数取的。
三大标准中的限制
ISO C限制:都是编译时限制,头文件<limits.h>中定义的常量。
POSIX 限制:分为19个不变最小值,不变值:SSIZE_MAX。运行时可增加的值,运行时不变的值,路径名可变值。
这些值有一些定义在头文件中,有一些则可定义或者不定义。那些可定义和不定义的值,不能在编译中实现,则只能在运行中得到,POSIX提供三个函数:sysconf,pathsysconf和fpathconf.
XSI限制:不变最小值,数值限制,运行时不变值。
运行时限制调用的三个函数
#include《unistd.h》 long sysconf(int name); long pathconf(const char *pathname, int name); long fpathconf(int filedes, int name);
后两个函数的区别是,一个用路径名作参数,一个用文件描述符作为参数。
sysconf的参数:以_SC_开头
pathconfi和fpathconf的参数:以_PC_开头(其中的一些参数)