编程接口指南

POSIX 进程间通信

POSIX 进程间通信 (interprocess communication, IPC) 是 System V 进程间通信的变体。 它是在 Solaris 7 发行版中引入的。 与 System V 对象类似,POSIX IPC 对象的属主、属主的组以及其他用户具有读取和写入权限,但是没有执行权限。 POSIX IPC 对象的属主无法将对象分配给其他属主。 POSIX IPC 包括以下功能:

与 System V IPC 接口不同,POSIX IPC 接口均为多线程安全接口。

POSIX 消息

下表中列出了 POSIX 消息队列接口。

表 6–2 POSIX 消息队列接口

接口名称 

目的 

mq_open(3RT)

连接到以及创建(可选)命名消息队列 

mq_close(3RT)

结束到开放式消息队列的连接 

mq_unlink(3RT)

结束到开放式消息队列的连接,并在最后一个进程关闭此队列时将其删除 

mq_send(3RT)

将消息放入队列 

mq_receive(3RT)

在队列中接收(删除)最早且优先级最高的消息 

mq_notify(3RT)

通知进程或线程消息已存在于队列中 

mq_setattr(3RT), mq_getattr(3RT)

设置或获取消息队列属性 

POSIX 信号量

POSIX 信号量比 System V 信号量轻得多。 POSIX 信号量结构定义单个信号量,而不是定义最多包含 25 个信号量的数组。

POSIX 信号量接口如下所示。

sem_open(3RT)

连接到以及创建(可选)命名信号量

sem_init(3RT)

初始化信号量结构(在调用程序内部,因此不是命名信号量)

sem_close(3RT)

结束到打开信号量的连接

sem_unlink(3RT)

结束到打开信号量的连接,并在最后一个进程关闭此信号量时将其删除

sem_destroy(3RT)

销毁信号量结构(在调用程序内部,因此不是命名信号量)

sem_getvalue(3RT)

将信号量的值复制到指定整数中

sem_wait(3RT)sem_trywait(3RT)

当其他进程拥有信号量时进行阻塞,或者当其他进程拥有信号量时返回错误

sem_post(3RT)

递增信号量计数

POSIX 共享内存

POSIX 共享内存实际上是映射内存的变体(请参见创建和使用映射)。 二者的主要差异在于:

shm_open(3RT) 中的选项数实际上少于 open(2) 中提供的选项数。