Linux 进程通信与程序执行机制解析
1. POSIX 消息队列
POSIX 标准(IEEE Std 1003.1 - 2001)定义了一种基于消息队列的进程间通信(IPC)机制,即 POSIX 消息队列。它与 System V IPC 的消息队列类似,但具有诸多优势:
- 为应用程序提供了更简单的基于文件的接口。
- 原生支持消息优先级,优先级决定消息在队列中的位置。
- 原生支持消息到达的异步通知,可通过信号或创建线程实现。
- 阻塞发送和接收操作支持超时设置。
POSIX 消息队列通过一组库函数进行处理,如下表所示:
| 函数名 | 描述 |
| — | — |
| mq_open( ) | 打开(可选创建)一个 POSIX 消息队列 |
| mq_close( ) | 关闭一个 POSIX 消息队列(不销毁它) |
| mq_unlink( ) | 销毁一个 POSIX 消息队列 |
| mq_send( ) , mq_timedsend( ) | 向 POSIX 消息队列发送消息;后者为操作定义时间限制 |
| mq_receive( ) , mq_timedreceive( ) | 从 POSIX 消息队列获取消息;后者为操作定义时间限制 |
| mq_notify( ) | 为空的 POSIX 消息队列建立消息到达的异步通知机制 |
| mq_getattr( ) , mq_setattr( ) | 分别获取和设置 POSIX 消息队列的属性(本质上是发送和接收操作是否应阻塞) |
应用程序使用这些函数的典型步骤如下:
1.