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

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

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

这个 receiver 程序不会创建消息队列,尽管 API 尽管建议那样。在 receiver 中,对

  1. int qid = msgget(key, 0666 | IPC_CREAT);

的调用可能因为带有 IPC_CREAT 标志而具有误导性,但是这个标志的真实意义是如果需要就创建,否则直接获取sender 程序调用 msgsnd 来发送消息,而 receiver 调用 msgrcv 来接收它们。在这个例子中,sender 以 1-1-2-2-3-3 的次序发送消息,但 receiver 接收它们的次序为 3-1-2-1-3-2,这显示消息队列没有被严格的 FIFO 行为所拘泥:

  1. % ./sender
  2. msg1 sent as type 1
  3. msg2 sent as type 1
  4. msg3 sent as type 2
  5. msg4 sent as type 2
  6. msg5 sent as type 3
  7. msg6 sent as type 3
  8.  
  9. % ./receiver
  10. msg5 received as type 3
  11. msg1 received as type 1
  12. msg3 received as type 2
  13. msg2 received as type 1
  14. msg6 received as type 3
  15. msg4 received as type 2

(编辑:西安站长网)

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

热点阅读