加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Linux下的进程间通信:使用管道和消息队列

发布时间:2019-05-13 22:25:30 所属栏目:建站 来源:Marty Kalin
导读:副标题#e# 学习在 Linux 中进程是如何与其他进程进行同步的。 本篇是 Linux 下进程间通信(IPC)系列的第二篇文章。第一篇文章 聚焦于通过共享文件和共享内存段这样的共享存储来进行 IPC。这篇文件的重点将转向管道,它是连接需要通信的进程之间的通道。管

看一下下面对一个消息队列的描述,每个消息由一个整数类型标记:

  1. +-+ +-+ +-+ +-+
  2. sender--->|3|--->|2|--->|2|--->|1|--->receiver
  3. +-+ +-+ +-+ +-+

在上面展示的 4 个消息中,标记为 1 的是开头,即最接近接收端,然后另个标记为 2 的消息,最后接着一个标记为 3 的消息。假如按照严格的 FIFO 行为执行,消息将会以 1-2-2-3 这样的次序被接收。但是消息队列允许其他收取次序。例如,消息可以被接收方以 3-2-1-2 的次序接收。

mqueue 示例包含两个程序,sender 将向消息队列中写入数据,而 receiver 将从这个队列中读取数据。这两个程序都包含的头文件 queue.h 如下所示:

示例 4. 头文件 queue.h

  1. #define ProjectId 123
  2. #define PathName "queue.h" /* any existing, accessible file would do */
  3. #define MsgLen 4
  4. #define MsgCount 6
  5.  
  6. typedef struct {
  7. long type; /* must be of type long */
  8. char payload[MsgLen + 1]; /* bytes in the message */
  9. } queuedMessage;

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读