当前位置: 首页 > 文档资料 > 理解 Linux 进程 >

POSIX

优质
小牛编辑
135浏览
2023-12-01

POSIX(Portable Operation System Interface)听起来好高端,就是一种操作系统的接口标准,至于谁遵循这个标准呢?就是大名鼎鼎的 Unix 和 Linux 了,有人问 Mac OS 是否兼容 POSIX 呢,答案是Yes苹果的操作系统也是 Unix-based 的。

有了这个规范,你就可以调用通用的API了,Linux 提供的 POSIX 系统调用在 Unix 上也能执行,因此学习 Linux 的底层接口最好就是理解 POSIX 标准。

补充一句,目前很多编程语言(Go、Java、Python、Ruby 等)都是天生跨平台的,因此我们很少注意系统调用的兼容性。实际上 POSIX 提供了这些语言上跨平台的语义,而且这是源码级别的保证。

POSIX 规范

POSIX 是一些IEEE标准,包括1003.0、1003.1、1003.1b 和 2003 等,实际上连 Linux 也没有完全兼容这些定义,不过只用 Linux 来学习 POSIX 足够了。

鉴于绝大多数程序员都没看过 IEEE 文档,我们就翻一下IEEE 1003.1-2001吧。

篇幅跟论文差不多,大意就是修正 Base 标准存在的问题,这个文档没有增加新的接口,但是加了符号、非函数的定义和保留更多命名空间。这是非常严谨的文档,感兴趣的同学可以读下,对普通的程序员我们还是建议了解以下的内容。

POSIX 进程

我们运行 Hello World 程序时,操作系统通过 POSIX 定义的 fork 和 exec 接口创建起一个POSIX进程,这个进程就可以使用通用的IPC、信号等机制。

POSIX 线程

POSIX 也定义了线程的标准,包括创建和控制线程的API,在Pthreads库中实现,有关线程的知识有机会再深入学习。