本节书摘来自异步社区《UNIX网络编程 卷2:进程间通信(第2版)》一书中的第1章,第1.4节,作者:【美】W. Richard Stevens著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.4 名字空间
当两个或多个无亲缘关系的进程使用某种类型的IPC对象来彼此交换信息时,该IPC对象必须有一个某种形式的名字(name)或标识符(identifier),这样其中一个进程(往往是服务器)可以创建该IPC对象,其余进程则可以指定同一个IPC对象。
管道没有名字(因此不能用于无亲缘关系的进程间),但是FIFO有一个在文件系统中的Unix路径名作为其标识符(因此可用于无亲缘关系的进程间)。在以后各章具体讲述其他形式的IPC时,我们将使用另外的命名约定。对于一种给定的IPC类型,其可能的名字的集合称为它的名字空间(name space)。名字空间非常重要,因为对于除普通管道以外的所有形式的IPC来说,名字是客户与服务器彼此连接以交换消息的手段。
图1-4汇总了不同形式的IPC所用的命名约定。
我们还指出哪些形式的IPC是由1996年版的Posix.1和Unix 98标准化的,这两个标准本身则在1.7节详细讨论。为了比较的目的,我们还包含了3种类型的套接字,它们在UNPv1中具体讲述。注意套接字API(应用程序编程接口)是由Posix工作组标准化的,最终应该成为某个未来的Posix.1标准的一部分。
尽管Posix.1标准化了信号量,它们仍然是可选的特性。图1-5汇总了Posix.1和Unix 98对各种IPC特性的说明。每种特性有强制、未定义和可选三种选择。对于可选的特性,我们指出了其中每种特性受支持时(通常在头文件中)定义的常值的名字,例如_POSIX_THREADS。注意,Unix 98是Posix.1的超集。