可移植操作系统接口POSIX
1. 名词解释
POSIX(Portable Operating System Interface of UNIX),从字面意思上可以得知,POSIX就是定义出来用来在不同操作系统之间进行移植的接口。摘抄一段:
POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。
POSIX 并不局限于 UNIX。许多其它的操作系统,例如 DEC OpenVMS 支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)或 POSIX.1,POSIX.1 提供了源代码级别的 C 语言应用编程接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。所以
其他不知道,我就记住一点好处:掌握了POSIX 的接口编程,很多类似的系统上的编程就会熟悉无比。
2. 例证
这里不是要举个例子,说个自己工作中亲身遇到过的。
- openrtos:某平台开发,基于openrtos,上面的应用层开发用的POSIX接口,以前没有做过openrtos的东西,但是在上面开发的时候发现上面的东西都比较熟悉,一些在linux下开发使用的接口都能成功使用,例如 mq_open() 系列的消息队列IPC。
- QNX:由于工作的特殊,会接触到QNX,不论是平常的应用开发,还是基于其新搞的hypervisor,都有说明只要符合POSIX标准规范的都可以正常运行。
然后,UNIX 家族本身就是一个比较大的家族,支持POSIX 也就不足为奇了。
3. 衍生的一个关注点
说到POSIX,联想到 IPC(Inter-Process Communication,进程间通信),会接触到 SYSTEM V 系的 IPC 接口:msgget()
等。
所以问题就是了解 System V 和 POSIX,这里就不展开,提醒自己注意就好。