POSIX标准
工作后开始转职程序员,有时会感觉很沮丧,各种计算机专业术语让人困惑。比如协议,比如标准。
关于标准这个概念,到底应该怎么理解:
接口是写函数的人保证不改变函数的签名,比如 int main(int, const char**),大家约定就这样用,你不用管函数的实现是什么,你只要重新编译用到这个函数的代码就行了,不用改代码。
比如,我写个Windos的一个函数是 const char* GetFileName(),而Linux 的是 const char* getfilename(); 它们都是返回文件名。
由于大小写不一样,当我要复用源代码的时候,所有用了这个函数的地方都要修改函数名字。如果我提前约定,不管哪个平台,返回文件名的函数都一样的函数签名,就不用改源代码了。这个约定就是某某标准。这个函数就叫接口。
这样想来,标准是不是只需要定义头文件就够了。。但其实远远不够,比如POSIX标准光是文档就有几千页。。。
linux和posix的关系:
linux一些函数的功能与posix标准的一些函数(接口)功能相同,只是签名不同,你可以认为只是改了个名字。如果你使用posix标准的函数,那么你为其它可以使用posix标准的系统写代码,就不用重新修改原来的函数签名,而只需要重新编译(因为实现的代码是不同的)一遍就行了。
POSIX标准的专业解释:
可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX),是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。
这个名字的发明者,很有名:
此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德•斯托曼应IEEE的要求而提议的一个易于记忆的名称。
这个标准,并不是一个强制性或者大家都在使用的标准:
Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。微软的Windows NT声称部分实现了POSIX标准。