码迷,mamicode.com
首页 > 系统相关 > 详细

进程间通信 System V 消息队列

时间:2016-04-28 00:01:40      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:

1.msgget (key_t ket,int flag) ; //创建一个新的消息队列或者访问一个已存在的消息队列

2.msgsnd(int msid, const void *ptr ,size_t length ,int flag ) // 发送

3.msgrcv() //读

4.msgctl(int msid , int cmd ,struct  msqid_ds *buff )//  cmd 提供删除,设置,返回当前

tips :

  1.客户端服务端例子 

    服务端创建两个消息队列,A,B,客户端从A中读入消息, 从B写入消息 ,服务端相反

  2.复用

    1.用消息的类型做区分 

    2. 类型字段做优先级字段

    使用:通过指定IPC_NOWAIT 标志,调用 msgrcv从消息队列中读出指定type的消息,如果没有直接返回

    eg :1.服务器,各个客户端往一个消息队列中写入消息,只要type能够标志他们的身份

   3 .消息队列上使用select ,poll等

    system V消息队列本身不能使用select等,但是可以通过服务器创建管道,子进程阻塞在msgrcv中,msgscv返回将消息写入管道,父进程对管道select。缺点

    是消息处理了三次。

   4.消息队列的限制

    msgmax,msgmnb,msgmni ,msgtql

    

进程间通信 System V 消息队列

标签:

原文地址:http://www.cnblogs.com/liulanghai/p/5440794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!