LINUX学习笔记——进程间通信4消息队列

社区服务
高级搜索
猴岛论坛电脑百科LINUX学习笔记——进程间通信4消息队列
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
3个回复

LINUX学习笔记——进程间通信4消息队列

楼层直达
小天°

ZxID:6660801

等级: 元老

举报 只看楼主 使用道具 楼主   发表于: 2012-03-23 0
a)         本质:消息链表

b)         分类:

1.         POSIX消息队列:可移植操作系统接口

2.         系统V:随内核持续的,只有在内核重启和人工删除,才会被删除。每个消息队列对应唯一的键值

c)         获取键值:Key_t ftok(char *pathname, char proj)

1.         作用:返回文件名对应的键值,本质是个文件

2.         #include<sys/types.h>, #include<sys/ipc.h>

3.         Pathname:文件名

4.         Proj:项目名,不为0即可

d)         获取描述字:int msgget(key_t key, int msgflg)

1.         #include<sys/types.h>, #include<sys/ipc.h>,#include<sys/msg.h>

2.         Key:键值,由ftok获得

3.         Msgflg:标志位

a)         IPC_CREAT:若没有键值对应的消息队列,创建新的消息队列

b)         IPC_EXCL:与IPC_CREAT一同使用,若存在返回错误

c)         IPC_NOWWAIT:无法满足时,不阻塞

4.         返回值:文件描述符msgid

e)         发送消息:int msgsnd(int msqid, struct msgbuf *msgp, int msgsz, int msgflg)

1.         #include<sys/types.h>, #include<sys/ipc.h>,#include<sys/msg.h>

2.         Msqid:消息队列描述符

3.         Msgp:存放消息的结构:

a)         struct msgbuf

b)         {long mtype;  消息类型,自己定义,一个类型可以存放多条消息

c)         Char mtext[1];}  消息数据首地址

4.         Msgsz:长度

5.         Msgflg:标志,IPC_NOWAIT:指明在消息队列没有足够空间容纳要发送的消息的时候,是否等待

f)          接收消息:int msgrcv(int msqid, struct msgbuf *msgp, int msgsz,long msgtype, int msgflg)

1.         作用:从消息队列中读取msgtype类型的消息,消息被读取之后就没有了。

2.         其它同上:

3.         消息长度:length=sizeof(struct mymsgbuf)-sizeof(long)
本帖de评分: 1 条评分 DB +10
DB+10 2012-03-23

多谢分享,电脑技术版块欢迎你。


技术永无止境,吹嘘只会自我堕落,难成大器!

技术组只要求两点,只要求做事踏实一点,遇事冷静一点。其他自由发挥。

茉莉花开99

ZxID:17754992

等级: 上尉
举报 只看该作者 沙发   发表于: 2012-03-23 0
谢谢分享哦!
忆海三千梦沧澜

ZxID:15934394

等级: 元帅
 你心里我永不及他

举报 只看该作者 板凳   发表于: 2012-03-23 0
多谢分享,电脑技术版块欢迎你。。
世界上最灿烂的不是阳光,而是心动女生的微笑。
初颜°Am▲

ZxID:3055

等级: 禁止发言

举报 只看该作者 地板   发表于: 2012-03-24 0
我狠赞同的说。 ~~
« 返回列表
发帖 回复