为什么要进行标准化呢?
在早期,Unix应用程序虽然可以在不同版本的unix操作系统之间移植相当容易,但是随着Unix系统版本的剧增以及他们的差别越来越大,不同版本的unix系统的应用程序的移植也越来越困难,为了提升应用程序在各种Unix系统环境的移植性,各机构对其进行了标准化,标准化的一个重要工作就是对每种实现必须定义各种限制进行说明。
ISO C标准
1989年,C程序设计语言的ANSI标准得到批准,此标准被采纳为国际标准ISO/IEC 9899:1990
ISO C标准的意图是提供C程序的可移植性,使其能够适合于大量不同的操作系统,而不是只适合UNIX系统
1999年,ISO C标准被更新,并批准为iso/iec 9899:1999 ,它显著改善了对数值处理的应用软件的支持,某些函数增加了关键字 restrict(增加的关键字不影响下面所说的POXIS接口),restrict关键字告诉编译器那些指针引用是可以优化的。
ISO C标准定义的头文件有24个,这些头文件在(FreeBSD 8.0、Linux 3.2.0、Mac os 10.6.8、Solaris 10)都支持
IEEE POSIX 标准
POSIX是一个最初由IEEE制定的标准族,POSIX指的是可移植操作系统结构(Protable Operating System Interface),该标准的目的是提升应用程序在各种UNIX系统环境之间的可移植性,
POSIX.1包含了ISO C标准函数库,同时结构分类两部分:必须部分和可选部分(X/Open系统接口(X/Open System Interface,XSI))。
POSIX.1中的X/Open系统接口(X/Open System Interface ,XSI)选项描述了可选的接口,也定义了遵循XSI的实现必须支持POSIX.1的哪些可选部分,只有遵循XSI实现的才能称为UNIX系统。
Single UNIX Specification(SUS)
Single UNIX Specification (SUS ,单一的UNIX规范)是POSIX.1标准的一个超级,它定义了一些附加结构扩展了POSIX.1规范提供的功能POSIX.1相当于是Single UNIX Specification 中基本规范部分。
可以总结为 ISO C是POSIX的子集,POSIX是SUS的子集,SUS是POSIX的扩展,X/Open系统接口(XSI)是POSIX.1中的接口,描述了POSIX中的可选接口,只有遵循XSI的实现才能称为UNIX系统