首页 > 系统服务 > 详细

进程间通信 System V 消息队列

时间:2016-04-28 00:01:39      阅读:332      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!