进程间通信
—IPC(InterProcess Communication)
进程间通信是不同的进程通过一个或多个文件来传递信息。经常用到的通信方式有两种,一种是通过管道来实现两个进程间的通信,管道机制是创建的不同进程通过调用管道函数在内核中开辟一块空间来实现。而还有一种方式就是使用system V标准,来实现不同进程间的通信,下来就浅谈一下system V标准中的第一种通信方式——消息队列。
一、什么是消息队列
消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。
二、消息队列的特点
1.消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识.
2.消息队列允许一个或多个进程向它写入与读取消息.
3.消息队列的生命周期随内核。
4.消息队列可以实现双向通信。
三、消息队列的创建,删除,和属性控制
1、创建消息队列
调用的函数msgget()。函数原型 int msgget(key_t key, int msgflg);
第一个参数key:可以认为是一个端口号,也可以由函数ftok生成。它是一个唯一标识的IPC(相当于身份证号一样